use*_*652 87 python regex python-3.x
u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')'
Run Code Online (Sandbox Code Playgroud)
我需要的只是括号内的内容.
tke*_*win 211
如果您的问题真的很简单,那么您不需要正则表达式:
s[s.find("(")+1:s.find(")")]
Run Code Online (Sandbox Code Playgroud)
waa*_*aan 49
用途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'"
Run Code Online (Sandbox Code Playgroud)
小智 32
如果要查找所有出现的事件:
>>> 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']
Run Code Online (Sandbox Code Playgroud)
Fau*_*toW 20
在tkerwin的答案的基础上,如果碰巧有嵌套的括号,如
st = "sum((a+b)/(c+d))"
Run Code Online (Sandbox Code Playgroud)
如果你需要采取之间的一切他的回答是行不通的第一左括号和最后一个右括号得到(a+b)/(c+d),因为从字符串的左边找到搜索,并会在第一右括号停止.
要解决这个问题,你需要使用rfind操作的第二部分,这样就可以了
st[st.find("(")+1:st.rfind(")")]
Run Code Online (Sandbox Code Playgroud)
contents_re = re.match(r'[^\(]*\((?P<contents>[^\(]+)\)', data)
if contents_re:
print(contents_re.groupdict()['contents'])
Run Code Online (Sandbox Code Playgroud)
小智 6
import re
fancy = u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')'
print re.compile( "\((.*)\)" ).search( fancy ).group( 1 )
Run Code Online (Sandbox Code Playgroud)