我需要验证由'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,例如
由于
答案 0 :(得分:25)
非常简单。首先,将锚点放在您的模式上:
"^patternhere$"
现在,让我们把模式放在一起:
"^v\d+$"
应该这样做。
答案 1 :(得分:5)
我认为您可能需要\b
(单词边界)而不是\A
(字符串的开头)和\W
(非单词字符),您也不需要使用前瞻((?=...)
)。
如果您需要捕获int "\bv(\d+)"
,请尝试:"\bv\d+"
。
编辑:您可能希望对Python正则表达式r"\bv\d+\b"
使用原始字符串语法,因为"\b"
是常规字符串中的退格符。
修改2 :由于+
是“贪婪的”,因此不需要或不需要跟踪\b
。
答案 2 :(得分:2)
只需使用
\bv\d+\b
或用^\bv\d+\b$
完全匹配..