我有要搜索的关键字列表。它们中的大多数不区分大小写,但其中的一些区分大小写,例如IT或信息技术的IT。通常,我将所有关键字与“ |”连在一起,并将标志设置为re.I。这将引起区分大小写的关键字的麻烦。有一个简单的方法可以解决此问题吗?还是我必须对区分大小写的内容进行单独搜索?谢谢!
keywords = ["internal control", "IT",... and many more]
patterns = r"\b(" + "|".join(keywords) + r")\b"
m = re.findall(patterns, text, flags = re.I)
您可以使用(?-i:...)
修饰符为该组关闭不区分大小写的搜索。但它仅适用于Python 3.6+:
import re
s = "Internal control, it IT it's, Keyword2"
keywords = ["internal control", "IT", "keyword2"]
pattern = '|'.join(r'((?-i:\b{}\b))'.format(re.escape(k)) if k.upper() == k else r'(\b{}\b)'.format(re.escape(k)) for k in keywords)
print(re.findall(pattern, s, flags=re.I))
印刷品:
[('Internal control', '', ''), ('', 'IT', ''), ('', '', 'Keyword2')]
从Python 3.6文档中:
(?imsx-imsx:...)
(来自集合“ i”,“ m”,“ s”,“ x”的零个或多个字母,可选后跟“-”,然后是同一集合中的一个或多个字母。)这些字母设置或删除了相应的标志:re.I(忽略大小写),re.M(多行),re.S(所有点都匹配)和re.X(详细),用于表达式的一部分。(这些标志在模块内容中描述。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句