u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')'
Tout ce dont j'ai besoin est le contenu entre parenthèses.
u"abcde(date='2/xc2/xb2',time='/case/test.png')"
ast
et ne sait tout simplement pas qu'elle existe.
u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')'
Tout ce dont j'ai besoin est le contenu entre parenthèses.
u"abcde(date='2/xc2/xb2',time='/case/test.png')"
ast
et ne sait tout simplement pas qu'elle existe.
Réponses:
Si votre problème est vraiment aussi simple, vous n'avez pas besoin de regex:
s[s.find("(")+1:s.find(")")]
Si vous voulez trouver toutes les occurrences:
>>> 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']
.*
est gourmand (prendra le match le plus long) et .*?
n'est pas gourmand (prendra le match le plus court)
En s'appuyant sur la réponse de tkerwin, si vous avez des parenthèses imbriquées comme dans
st = "sum((a+b)/(c+d))"
sa réponse ne fonctionnera pas si vous devez tout prendre entre la première parenthèse ouvrante et la dernière parenthèse fermante pour obtenir (a+b)/(c+d)
, car rechercher des recherches à partir de la gauche de la chaîne, et s'arrêterait à la première parenthèse fermante.
Pour résoudre ce problème, vous devez utiliser rfind
pour la deuxième partie de l'opération, donc cela deviendrait
st[st.find("(")+1:st.rfind(")")]
contents_re = re.match(r'[^\(]*\((?P<contents>[^\(]+)\)', data)
if contents_re:
print(contents_re.groupdict()['contents'])