python正则表达式只匹配特定的单词,而不是一个子集

时间:2014-02-05 20:39:18

标签: python regex

我正在尝试使用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”?

3 个答案:

答案 0 :(得分:4)

这是因为你的正则表达式匹配:

\bAZ

OR

Zard\b

使用非捕获组来限制|运算符的“影响力”:

\b(?:AZ|Zard)\b

这样,它会显示:\b,然后是AZZard,最后是\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)

使用^$

更好地显示字符串的开头和结尾