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.

  • Wie man eine Variable in meinen Re.Compile-Ausdruck hinzufügt
  • Python regex AttributeError: 'NoneType' Objekt hat kein Attribut 'group'
  • Wie verwende ich reguläre Ausdrücke, um HTML-Tags zu analysieren?
  • Gibt es ein Perl-Äquivalent von Pythons Re.findall / re.finditer (iterative Regex-Ergebnisse)?
  • Regex für Links in HTML-Text
  • Inkonsistenz zwischen Sed und Python reguläre Ausdrücke
  • Trennen Sie Schlüsselwörter und @ Erwähnungen aus dem Datensatz
  • Split-String bei Kommas außer in Klammerumgebung
  • 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.