在regexr.com上,我开发了一个与特定类型的专有名称相匹配的正则表达式。下面是这样的表达:
\b([a-z]?[A-Z]+[\w]*[ ]*)+\b您可以看到,在http://regexr.com/3bifh中,大量的示例正在按预期进行匹配。
例如,根据赫尔曼·梅尔维尔的“白鲸”或“白鲸”,它与Moby Dick、White Whale和Herman Melville相匹配
我试图在Python中复制这个结果,但效果不太好。下面是代码:
import re
text = "Moby Dick or the White Whale by Herman Melville"
print(re.findall(r"\b([a-z]?[A-Z]+[\w]*[ ]*)+\b", text))产出如下:
['Dick ', 'Whale ', 'Melville']这只匹配上面每个结果的最后一部分。为什么这个表达式在Python中不起作用?
发布于 2015-08-11 18:42:37
Regex引擎只记得多个组匹配时的最后一组。
你可以用这个代替
print (re.findall(r"\b((?:[a-z]?[A-Z]+[\w]*[ ]*)+)\b", text))https://stackoverflow.com/questions/31949535
复制相似问题