问题:在括号之间返回文本的正则表达式
u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')'
我需要的只是括号内的内容。
回答 0
如果您的问题确实如此简单,则不需要正则表达式:
s[s.find("(")+1:s.find(")")]
回答 1
用途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'"
回答 2
如果要查找所有事件:
>>> 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']
回答 3
如果您碰巧像这样嵌套嵌套括号,请以tkerwin的答案为基础
st = "sum((a+b)/(c+d))"
如果您需要将第一个开括号和最后一个闭括号之间的所有内容都取成get (a+b)/(c+d)
,他的答案将不起作用,因为find从字符串的左侧开始搜索,并且会在第一个闭括号处停止。
要解决此问题,您需要使用rfind
该操作的第二部分,因此它将变成
st[st.find("(")+1:st.rfind(")")]
回答 4
import re
fancy = u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')'
print re.compile( "\((.*)\)" ).search( fancy ).group( 1 )
回答 5
contents_re = re.match(r'[^\(]*\((?P<contents>[^\(]+)\)', data)
if contents_re:
print(contents_re.groupdict()['contents'])
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。