我正在尝试使用python中的正则表达式搜索特定单词。
lst2 = ['Azmat', 'AZ', 'azim', 'Zard', 'Zardari']
pattern = re.compile(r"\bAZ|Zard\b", re.I)
for item in lst2:
if re.search(pattern, item):
print item
此代码生成:
Azmat
AZ
azim
Zard
为什么它不匹配“AZ”和“Zard”?
答案 0 :(得分:4)
这是因为你的正则表达式匹配:
\bAZ
OR
Zard\b
使用非捕获组来限制|
运算符的“影响力”:
\b(?:AZ|Zard)\b
这样,它会显示:\b
,然后是AZ
或Zard
,最后是\b
。
答案 1 :(得分:3)
您当前的代码正在查找以az
开头或以zard
结尾的字词。修复如下:
pattern = re.compile(r"\b(AZ|Zard)\b", re.I)
答案 2 :(得分:2)
怎么样:
pattern = re.compile(r"^(AZ|Zard)$", re.I)
使用^
和$