python - regulares - Expresión regular para devolver el texto entre paréntesis
python string expresiones regulares (5)
u''abcde(date=/'2/xc2/xb2/',time=/'/case/test.png/')''
Todo lo que necesito es el contenido dentro del paréntesis.
Basándose en la respuesta de tkerwin, si tiene paréntesis anidados como en
st = "sum((a+b)/(c+d))"
su respuesta no funcionará si necesita tomar todo entre el primer paréntesis de apertura y el último paréntesis de cierre para obtener (a+b)/(c+d)
, porque encuentra las búsquedas de la izquierda de la cadena, y se detendría en el primer paréntesis de cierre.
Para solucionarlo, debe usar rfind
para la segunda parte de la operación, para que se convierta en
st[st.find("(")+1:st.rfind(")")]
Si quieres encontrar todas las ocurrencias:
>>> re.findall(''/(.*?/)'',s)
[u"(date=''2/xc2/xb2'',time=''/case/test.png'')", u''(eee)'']
>>> re.findall(''/((.*?)/)'',s)
[u"date=''2/xc2/xb2'',time=''/case/test.png''", u''eee'']
Si su problema es así de simple, no necesita expresiones regulares:
s[s.find("(")+1:s.find(")")]
Utilice re.search(r''/((.*?)/)'',s).group(1)
:
>>> import re
>>> s = u''abcde(date=/'2/xc2/xb2/',time=/'/case/test.png/')''
>>> re.search(r''/((.*?)/)'',s).group(1)
u"date=''2/xc2/xb2'',time=''/case/test.png''"
import re
fancy = u''abcde(date=/'2/xc2/xb2/',time=/'/case/test.png/')''
print re.compile( "/((.*)/)" ).search( fancy ).group( 1 )