Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: spiritdead en 28 Diciembre 2012, 16:38 pm



Título: duda de regex
Publicado por: spiritdead en 28 Diciembre 2012, 16:38 pm
buenas buenas

alguno q pueda aclararme y echarme 1 mano

necesito 1 regex que detecte este patron

@nick <--- tipo twitter

ejemplos de como debe cumplirse

@nick <- bien
qweqwe @nick qeqweqwe <- bien
qweqwe @nick <- bien
asd@nick.com <-- mal
@nick.com <-- mal
@nick'qweqwe <- mal

alguna idea ? tengo este pero no me convence  "(?<!\w)(@(\w+))" <-- bug con el patron  @nick.com


Título: Re: duda de regex
Publicado por: Keyen Night en 28 Diciembre 2012, 22:00 pm
Si con esto "qweqwe" te refieres a cualquier letra incluyendo números :xD.

Podría ser así, esta expresión encaja con los ejemplos que diste:

Código:
^(@\w+|\w+\s@\w+(\s\w+)?)$

Esta expresión no captura textos del tipo:

Código:
@nick qweqwe

Esta acepta lo anterior y la expresión no capturada:

Código:
^(@\w+(\s\w+)?|\w+\s@\w+(\s\w+)?)$

Espero te sirva ;D

Hubieses colocado todos los casos .__.


Título: Re: duda de regex
Publicado por: spiritdead en 29 Diciembre 2012, 06:54 am
Si con esto "qweqwe" te refieres a cualquier letra incluyendo números :xD.

Podría ser así, esta expresión encaja con los ejemplos que diste:

Código:
^(@\w+|\w+\s@\w+(\s\w+)?)$

Esta expresión no captura textos del tipo:

Código:
@nick qweqwe

Esta acepta lo anterior y la expresión no capturada:

Código:
^(@\w+(\s\w+)?|\w+\s@\w+(\s\w+)?)$

Espero te sirva ;D

nope no me sirve ni 1 de las 2 :P
la idea es q me tome solo los @nick pero cumpliendo los casos anteriores

-q si tiene texto antes del @ no lo tome, signos,puntos, y q se pueda poner al principio de la oracion o etc

el q puse hace todo, menos cuando le pones signos puntuacions q sigue bug


Título: Re: duda de regex
Publicado por: spiritdead en 29 Diciembre 2012, 07:26 am
resuelto usando este regex "(?<!\w)(@(\w+))(\s|$)"