/ /括弧の間のテキストを返す正規表現 - python、regex、python-3.x

かっこの間のテキストを返す正規表現 - python、regex、python-3.x

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

必要なのは括弧内の内容だけです。

回答:

回答№1の152

あなたの問題が本当にこれほど単純であるならば、あなたは正規表現を必要としません:

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

答え№235

つかいます 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""

回答№3の21

すべての出現箇所を見つけたい場合は、

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

回答№4の9

tkerwinの答えに基づいて、もしあなたがたまたまのように括弧が入れ子になっていたら

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

あなたが間にすべてを取る必要がある場合、彼の答えはうまくいきません。 最初 左かっこ そしてその 最終 右括弧 取得するため (a+b)/(c+d)なぜならfindは文字列の左から検索し、最初の閉じ括弧で止まるからです。

それを修正するには、あなたが使用する必要があります rfind 操作の2番目の部分では、

st[st.find("(")+1:st.rfind(")")]

答え№5の場合は3
import re

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

print re.compile( "((.*))" ).search( fancy ).group( 1 )