u"abcde(date="2/xc2/xb2",time="/case/test.png")"
Wszystko, czego potrzebuję, to zawartość w nawiasie.
Odpowiedzi:
152 dla odpowiedzi nr 1Jeśli twój problem jest naprawdę taki prosty, nie potrzebujesz regex:
s[s.find("(")+1:s.find(")")]
35 dla odpowiedzi nr 2
Posługiwać się 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""
21 dla odpowiedzi nr 3
Jeśli chcesz znaleźć wszystkie zdarzenia:
>>> 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"]
9 dla odpowiedzi № 4
Opierając się na odpowiedzi tkaczy, jeśli zdarzy ci się mieć zagnieżdżone nawiasy jak w
st = "sum((a+b)/(c+d))"
jego odpowiedź nie zadziała, jeśli będziesz musiał zabrać wszystko między pierwszy otwierający nawias i ostatni, ubiegły, zeszły zamykający nawias dostać (a+b)/(c+d)
, ponieważ znajdź wyszukiwania z lewej strony łańcucha i zatrzyma się na pierwszym nawiasie zamykającym.
Aby to naprawić, musisz użyć rfind
na drugą część operacji, tak by się stało
st[st.find("(")+1:st.rfind(")")]
3 dla odpowiedzi № 5
import re
fancy = u"abcde(date="2/xc2/xb2",time="/case/test.png")"
print re.compile( "((.*))" ).search( fancy ).group( 1 )