Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Kase en 15 Enero 2012, 10:08 am



Título: [python] expresión regular con or |
Publicado por: Kase en 15 Enero 2012, 10:08 am
necesito ayuda con esta exprecion...

exprecion = re.compile ( '\[palabra: ?(\'|")([- a-zA-Z0-9]*)(\'|") ? \]' )

lo que hace es buscar la cadena  [palabra: 'valor']  

puedo hacer esto.  

valores =  exprecion.search( "lalalalala [palabra: 'no tengo idea']")

y en
valores.group(0)  = [palabra: 'no tengo idea']
valores.group(1) = '
valores.group(2) = no tengo idea
valores.group(3) = '

mi problema es que no quiero   group(1) y group(3)
necesito eliminar  el ('|") de la exprecion regular.. que busca ' o ¨
pero no necesito eliminar el  "or"  osea el    '|"
si le quito los parentesis la exprecion no funciona... exite algun caracter similar a los  ()  pero que solo sirva para delimitar y no para indicar que quiero optener ese valor?


se que puedo hacer esto otro:

exprecion = re.compile ( '\[palabra: ?(\'|")(?P<valor>[- a-zA-Z0-9]*)(\'|") ? \]' )

y entonces poder hacer:

valor.group('valor') = no tengo idea ...


el motivo de mi pregunta es conocer si existe algun caracter similar al los ( ) pero que solo sirvan para delimitar

PD:  [- a-zA-Z0-9]*  me refiero a que pueda tener cualquier caracter entre a-z, A-Z , 0 - 9  , "-" y " " (espacios en blanco)  enrrealidad tambien  necesito que tenga acentos y ñ  pero no tengo idea como simplificar  [-áéíóúÁÉÍÓÚñÑ¿?!¡()* a-zA-Z0-9]*
o en otras palabras  un  \w*  que excluya [ ] y que no confunda el ultimo '  o "   :-\


Título: Re: [python] exprecion regular con or |
Publicado por: SirLanceCC en 16 Enero 2012, 20:49 pm
Tomado de http://docs.python.org/library/re.html (http://docs.python.org/library/re.html)
Citar
(?:...)
    A non-capturing version of regular parentheses. Matches whatever regular expression is inside the parentheses, but the substring matched by the group cannot be retrieved after performing a match or referenced later in the pattern.

O podrías usar [AB] que coindidirá con un caracter, ya sea A o B, pero ningún otro. En tu caso usarías alo como ["'].


Título: Re: [python] exprecion regular con or |
Publicado por: Kase en 17 Enero 2012, 17:21 pm
jajajaja...
aveces la respuesta es obvia y no la vemos  :P

gracias