繁体   English   中英

python正则表达式仅匹配特定单词,而不是子集

[英]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然后是AZZard ,最后是\\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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM