使用 re/regex 查找句子中重叠的关键字

问题描述 投票:0回答:1
import re
keyword_pattern='love|love India'
Sentence=I love India
Match=re.finditer(pattern, sentence)

示例 关键词=['爱', '爱印度', '巴基斯坦'] 句子=“我爱印度”

我需要的输出:['爱','爱印度']

我得到的输出:[爱]

python regex python-re findall
1个回答
0
投票

文档指出

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
的产量:

[‘爱’、‘爱印度’]

© www.soinside.com 2019 - 2024. All rights reserved.