回答:
あなたの問題が本当にこの単純なものであれば、正規表現は必要ありません:
s[s.find("(")+1:s.find(")")]
すべてのオカレンスを検索する場合:
>>> 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']
.*
は、貪欲である(最長の試合を取る)と.*?
貪欲ではない(最短の試合を取る)
あなたが持って起こる場合は、tkerwinの回答を踏まえ、ネストされた括弧のように
st = "sum((a+b)/(c+d))"
彼の答えは、あなたが間にあるすべて取る必要がある場合には動作しません。最初の左括弧と最後の閉じ括弧取得するために(a+b)/(c+d)
から検索検索文字列の左にあるため、最初閉じ括弧で停止します。
これを修正するにrfind
は、操作の後半で使用する必要があるため、次のようになります。
st[st.find("(")+1:st.rfind(")")]
contents_re = re.match(r'[^\(]*\((?P<contents>[^\(]+)\)', data)
if contents_re:
print(contents_re.groupdict()['contents'])