[Python-es] expresiones regulares
Hernan Martinez Foffani
hernan en orgmf.com.ar
Mie Jul 31 16:59:35 CEST 2002
> estoy aqui, releyendome por segunda vez la documentacion de las
> expresiones regulares y, por
> ejemplo, no me queda claro como puedo sacar el contenido de algo
> que le pase entre parentesis.
supongo que te referís a las regexp de python, no? las que se
usan con:
import re
> un ejemplo de lo que le quiero pasar es: 'linux or (sun and bsd)'
hice la pregunta anterior porque esa no es una expresion regular
valida. en realidad, sí es, pero no hace lo que vos queres.
el equivalente sería:
'linux|sun.*bsd|bsd.*sun'
>>> x = re.search('linux|sun.*bsd|bsd.*sun',
'asdfl sun laksd bsdfl')
>>> x.start()
6
>>> x.end()
19
>>>
> entonces, quiero que por un lado, que lo que esta entre
> parentesis me lo coja por un lado y luego
> ya lo tratare yo. por cierto, que pasaria si hay varios
> parentesis anidados? '(sun and (www or
> http))'
para recuperar lo que hay dentro de los parentesis usa
\numero, ej. \1, \2 etc.
el numero refiere al correspondiente parentesis de apertura
en la expresion:
'(sun.*[(www|http)])'
1 2
>>> x = re.search('(sun.*[(www|http)])',
'lasdfkasdflk sun alsf www asldfalsfd')
>>> x.start()
13
>>> x.end()
25
>>>
pero esta ultima expresion no encuentra strings que contengan
primero 'www' y luego 'sun'
mas informacion en:
http://py-howto.sourceforge.net/regex/regex.html
saludos,
-Hernan
Más información sobre la lista de distribución Python-es