Python正则表达式忽略模式

问题描述 投票:0回答:1

我列出了两个如下所示的关键字:

keywords = ["Azure", "Azure cloud"]

但是python无法找到第二个关键字“ Azure cloud”

>>> keywords = ["Azure", "Azure cloud"]
>>> r = re.compile('|'.join([re.escape(w) for w in keywords]), flags=re.I)
>>> word = "Azure and Azure cloud"
>>> r.findall(word)
['Azure', 'Azure']

我期望这样的输出:['Azure','Azure','Azure cloud']

任何指南/帮助将不胜感激!

python regex pattern-matching
1个回答
0
投票

您可以运行多个搜索。

import itertools
import re

keywords = ["Azure", "Azure cloud"]
patterns = [re.compile(re.escape(w), flags=re.I) for w in keywords]
word = "Azure and Azure cloud"
results = list(itertools.chain.from_iterable(
    r.findall(word) for r in patterns
))
print(results)

输出:

['Azure', 'Azure', 'Azure cloud']
© www.soinside.com 2019 - 2024. All rights reserved.