我需要验证由'v'加上正整数组成的版本号,而不需要其他任何东西,例如"v4","v1004"
我有
import re
pattern = "\Av(?=\d+)\W"
m = re.match(pattern, "v303")
if m is None:
print "noMatch"
else:
print "match"
Run Code Online (Sandbox Code Playgroud)
但这不起作用!例如,删除\ A和\ W将匹配v303,但也将匹配v30G
谢谢
Ste*_*oss 25
非常直截了当.首先,在您的模式上放置锚点:
"^patternhere$"
Run Code Online (Sandbox Code Playgroud)
现在,让我们把模式放在一起:
"^v\d+$"
Run Code Online (Sandbox Code Playgroud)
应该这样做.
我想你可能想要\b(单词边界)而不是\A(字符串的开头)和\W(非单词字符),你也不需要使用lookahead(the (?=...)).
尝试:"\bv(\d+)"如果你需要捕获int,"\bv\d+"如果你不需要.
编辑:您可能希望对Python正则表达式使用原始字符串语法r"\bv\d+\b",因为它"\b"是常规字符串中的退格符.
编辑2:由于+是"贪婪",\b因此不需要或不需要拖尾.