Regulärer Ausdruck, um Text zwischen Klammer zurückzugeben

u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')' 

Alles was ich brauche ist der Inhalt in der Klammer.

  • Python sucht nach mehreren Werten und zeigt mit Grenzen
  • Hilfe bei einem AppEngine Handler Regex?
  • Python-regulärer Ausdruck nicht passend
  • Python Unicode Regulärer Ausdruck
  • Python Regex, der Platz nach Punkt hinzufügt
  • Summe der Strings aus Textdatei mit Regex extrahiert
  • Erstellen Sie ein Dataframe aus HTML-Tabelle in Python
  • Regex String stimmt nicht überein
  • 5 Solutions collect form web for “Regulärer Ausdruck, um Text zwischen Klammer zurückzugeben”

    Wenn dein Problem wirklich nur so einfach ist, brauchst du nicht regex:

     s[s.find("(")+1:s.find(")")] 

    Verwenden Sie 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'" 

    Wenn du alle Vorkommnisse finden möchtest:

     >>> 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'] 

    Aufbauend auf Tkerwins Antwort, wenn du zufällig in Klammern verschachtelt hast

     st = "sum((a+b)/(c+d))" 

    Seine Antwort wird nicht funktionieren, wenn man alles zwischen der ersten öffnenden Klammer und der letzten schließenden Klammer nehmen muss , um (a+b)/(c+d) , weil suche sucht von links von der Zeichenkette und würde an der Erste Schlussklammer.

    Um das zu beheben, musst rfind für den zweiten Teil der Operation rfind

     st[st.find("(")+1:st.rfind(")")] 
     import re fancy = u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')' print re.compile( "\((.*)\)" ).search( fancy ).group( 1 ) 
    Python ist die beste Programmiersprache der Welt.