u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')'
Potrzebuję tylko zawartości w nawiasie.Wyrażenie regularne do zwracania tekstu między nawiasem
u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')'
Potrzebuję tylko zawartości w nawiasie.Wyrażenie regularne do zwracania tekstu między nawiasem
Jeśli problem jest tak naprawdę to proste, nie trzeba regex:
s[s.find("(")+1:s.find(")")]
co, jeśli nie ma "(" i ")"? otrzymasz s [0: -1]. Co oznacza, że dostaniesz cokolwiek w 's': \. Będzie dobrze, jeśli najpierw sprawdzisz, czy ciąg ma nawias. – Omar
Co jeśli będziesz miał "(trochę tekstu (jakiś tekst w nawiasie wewnętrznym) trochę więcej tekstu)"? –
Problem nie jest tak prosty jak pierwotny problem i wymaga innego rozwiązania. – tkerwin
Zastosowanie 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)
Jeśli chcesz znaleźć wszystkie wystąpienia:
>>> 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']
Budowanie na tkerwinie odpowiedź, jeśli zdarzy się, że zagnieżdżone nawiasy jak w
st = "sum((a+b)/(c+d))"
jego odpowiedź nie będzie działać, jeśli trzeba wziąć wszystko pomiędzy pierwszy otwierającym nawiasie a ostatnim zamykającym nawiasiedostać (a+b)/(c+d)
, ponieważ wyszukiwa po lewej stronie napisu i zatrzyma się przy pierwszym zamykającym nawiasie.
Aby to naprawić, trzeba użyć rfind
do drugiej części pracy, więc byłoby stać
st[st.find("(")+1:st.rfind(")")]
nawiasach? Nie widzę żadnych nawiasów. Miałeś na myśli nawias? – kzh
Dlaczego nie używać podwójnych cudzysłowów? Ułatwiłoby to czytanie napisu, np. "U" abcde (date = '2/xc2/xb2', time = '/ case/test.png') "' – kzh
To pytanie denerwuje mnie po prostu patrząc na to. Mam podejrzenie, że OP * naprawdę * chce funkcjonalności w 'ast' i po prostu nie wie, że istnieje. – Kevin