我想找到所有重叠和非重叠模式匹配
代码如下:
import re
words = [r"\bhello\b",r"\bworld\b",r"\bhello world\b"]
sentence = "Hola hello world and hello"
for word in words:
for match in re.finditer(word,sentence):
print(match.span(),match.group())
给我以下结果(我对此感到高兴,但需要一种有效的方法)
(5, 10) hello
(21, 26) hello
(11, 16) world
(5, 16) hello world
我知道这不是很有效。示例:假设我有20k个单词和10k个句子,那么要重新匹配需要200万x 2次调用,这需要很多时间。
你能给我建议一个解决这个问题的有效方法吗?
1条答案
按热度按时间hof1towb1#
顺序不同,但结果相同,速度明显加快:
如果要确保不匹配
hello worldLY
(即,仅子字符串的前缀)您可以执行以下操作:任何一种打印: