import re
keyword_pattern='love|love India'
Sentence=I love India
Match=re.finditer(pattern, sentence)
示例 关键词=['爱', '爱印度', '巴基斯坦'] 句子=“我爱印度”
我需要的输出:['爱','爱印度']
我得到的输出:[爱]
文档指出
re.finditer(pattern, string, flags=0)
返回一个迭代器,生成字符串中 RE 模式的所有非重叠匹配的匹配对象。从左到右扫描字符串,并按找到的顺序返回匹配项。结果中包含空匹配项。
为了方便,我们也可以使用
re.findall
,它的作用与[el.group() for el in re.finditer(...)]
基本相同,但有同样的问题:
re.findall(pattern, string, flags=0)
以字符串或元组列表的形式返回字符串中模式的所有非重叠匹配。从左到右扫描字符串,并按找到的顺序返回匹配项。结果中包含空匹配项。
但是由于您已经很好地分隔了模式组,因此只需循环它们即可:
import re
patterns = ["love", "love India"]
sentence = "I love India"
matches = []
for pat in patterns:
matches += re.findall(pat, sentence)
matches
的产量:
[‘爱’、‘爱印度’]