如何在Python正则表达式中实施贪婪匹配

q0987
In [30]: s = '123 45$78 98@abc %'

In [31]: print re.findall(r'\b[\w]+ ?', s)
['123 ', '45', '78 ', '98', 'abc ']

In [32]: print re.findall(r'(\b[\w]+ ?)', s)
['123 ', '45', '78 ', '98', 'abc ']

In [33]: print re.findall(r'(\b[\w]+ ?)+', s)
['45', '98', 'abc ']

预期结果如下:

['123 45', '78 98', 'abc ']

问题>此问题的重点与如何分割字符串无关。相反,我想知道python是否允许我们进行贪婪匹配。

谢谢

tobias_k

Python会进行贪婪匹配。问题在于您的正则表达式似乎是错误的。

使用[\w]+ ?,您可以匹配一些字符,并可以选择后面跟一个空格。您似乎想要的只是将某些字符或空格混合在一起。尝试这个:

In [10]: re.findall(r'\b[\w ]+', s)
Out[10]: ['123 45', '78 98', 'abc ']

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python中匹配正则表达式?

如何在python中从右到左使用非贪婪的正则表达式?

如何使正则表达式匹配非贪婪?

如何编写与非贪婪匹配的正则表达式?

Python正则表达式非贪婪不匹配

如何在python中表达这种非贪婪的正则表达式?

Python中的非贪婪dotall正则表达式

Python正则表达式中的非贪婪

如何在Javascript中匹配正则表达式

如何在Smalltalk正则表达式中匹配[

如何在正则表达式中匹配“ [”和“]”?

如何在正则表达式中匹配“或”内部?

如何在此 python 正则表达式情况下指定非贪婪模式?

如何在匹配表达式中编写正则表达式文字?

如何在尝试与python中的正则表达式匹配时应付变音符号

如何在Python中获取匹配正则表达式的组名?

如何在python 3中打印正则表达式匹配结果?

如何在python正则表达式中匹配双引号?

如何在Python中修改与特定正则表达式匹配的文本?

如何在Python中从正则表达式匹配和提取组?

如何在Python正则表达式匹配中处理多行模式

如何在Python中再次使用先前匹配的正则表达式?

如何在Python中用正则表达式中的函数替换匹配项

如何在python中仅突出显示匹配正则表达式的某些部分

如何在python中对正则表达式匹配结果执行求和

如何在python正则表达式中对日期匹配应用验证

非贪婪的正则表达式匹配不同的行为

正则表达式非贪婪完全匹配

正则表达式贪婪匹配选择整行