我正在使用Python 2.7。当前代码返回hello }{(2) world
。如果我只想要最短的匹配,在这种情况下hello
,Python 2.7中的解决方案是什么?
import re
content = '{(1) hello }{(2) world}'
reg = '{\(1\)(.*)}'
results = re.findall(reg, content)
print results[0]
答案 0 :(得分:3)
制作通配符匹配non-greedy:
>>> reg = r'{\(1\)(.*?)}'
# this ? is important^
>>> results = re.findall(reg, content)
>>> print results[0]
hello
答案 1 :(得分:0)
对于这种情况,否定的角色类也会帮助你。
reg = r'{\(1\)([^}]*)}'
results = re.findall(reg, content)
print results[0]