2.7 最短匹配模式
问题
不想使用贪婪模式
解决方案
在正则表达式中*操作符是贪婪的,因此匹配操作会查找最长的可能匹配。
为了修正这个问题,可以在模式中的*操作符后面加上?修饰符:
>>> text2 = 'Computer says "no." Phone says "yes."'
>>> str_pat = re.compile(r'\"(.*?)\"')
>>> str_pat.findall(text2)
['no.', 'yes.']
讨论
通过在 *
或者 +
这样的操作符后面添加一个 ?
可以强制匹配算法改成寻找最短的可能匹配。
Last updated
Was this helpful?