在python正则表达式中使用锚来获得精确匹配
我需要验证一个版本号,该版本号由“v”加上正整数组成,除此之外没有其他内容 例如“v4”、“v1004” 我有在python正则表达式中使用锚来获得精确匹配,python,regex,Python,Regex,我需要验证一个版本号,该版本号由“v”加上正整数组成,除此之外没有其他内容 例如“v4”、“v1004” 我有 import re pattern = "\Av(?=\d+)\W" m = re.match(pattern, "v303") if m is None: print "noMatch" else: print "match" 但这不管用!例如,删除\A和\W将匹配v303,但也将匹配v30G 谢谢我想你可能想要\b(单词边界)而不是\A(字符串的开头)和\W(非
import re
pattern = "\Av(?=\d+)\W"
m = re.match(pattern, "v303")
if m is None:
print "noMatch"
else:
print "match"
但这不管用!例如,删除\A和\W将匹配v303,但也将匹配v30G
谢谢我想你可能想要
\b
(单词边界)而不是\A
(字符串的开头)和\W
(非单词字符),而且你不需要使用前瞻(the(?=…)
)
请尝试:“\bv(\d+)”
如果需要捕获int,如果不需要,请尝试:“\bv\d+”
Edit:您可能希望对Python正则表达式使用原始字符串语法,r“\bv\d+\b”
,因为“\b”
是常规字符串中的退格字符
编辑2:由于
+
是“贪婪的”,因此不需要或不需要拖尾\b
。非常简单。首先,在模式上设置锚:
"^patternhere$"
现在,让我们总结一下模式:
"^v\d+$"
应该可以了。只需使用
\bv\d+\b
或者用^\bv\d+\b$
完全匹配