[英]python regex matching specific word only, not a subset
我正在尝试在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”?
这是因为您的正则表达式符合以下任一条件:
\bAZ
要么
Zard\b
使用非捕获组来限制“影响”的|
操作员:
\b(?:AZ|Zard)\b
这样,它显示为: \\b
然后是AZ
或Zard
,最后是\\b
。
您当前的代码正在寻找以az
开头或以zard
。 像这样修复它:
pattern = re.compile(r"\b(AZ|Zard)\b", re.I)
关于什么:
pattern = re.compile(r"^(AZ|Zard)$", re.I)
使用^
和$
更好地显示字符串的开始和结束
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.