python正则表达式仅匹配特定单词,不匹配子集
我试图在python中使用正则表达式搜索特定的单词python正则表达式仅匹配特定单词,不匹配子集,python,regex,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”?您当前的代码正在寻找
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”?您当前的代码正在寻找一个以
AZ
开头或以Zard
结尾的单词。像这样修复它:
pattern = re.compile(r"\b(AZ|Zard)\b", re.I)
您当前的代码正在查找以
az
开头或以zard
结尾的单词。像这样修复它:
pattern = re.compile(r"\b(AZ|Zard)\b", re.I)
那么:
pattern = re.compile(r"^(AZ|Zard)$", re.I)
最好用^
和$
显示字符串的开头和结尾,那么:
pattern = re.compile(r"^(AZ|Zard)$", re.I)
最好使用
^
和$
显示字符串的开头和结尾,这是因为您的正则表达式匹配:
\bAZ
或
使用非捕获组限制|
运算符的“影响”:
\b(?:AZ|Zard)\b
这样,它的内容是:
\b
然后是AZ
或Zard
和最后一个\b
这是因为您的正则表达式匹配:
\bAZ
或
使用非捕获组限制|
运算符的“影响”:
\b(?:AZ|Zard)\b
这样,它就会读到:
\b
然后是AZ
或Zard
和最后一个\b
r“\b(AZ | Zard)\b”
和r^(AZ | Zard)$”
?对于你的例子来说,没有,但是^
表示“字符串的开始”和$/code>“字符串的结束”。如果字符串中有多个单词,则无法使用。首先可以在字符串qwe-AZ-wdwq-Zard-dawg-aw
中查找匹配项AZ
或Zard
。第二种模式只有在字符串正好是AZ
或Zard
时才匹配,但是^
表示“字符串的开始”和$
“字符串的结束”。如果字符串中有多个单词,则无法使用。首先可以在字符串qwe-AZ-wdwq-Zard-dawg-aw
中查找匹配项AZ
或Zard
。第二种模式仅当字符串正好是AZ
或Zard