Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python正则表达式中使用锚来获得精确匹配_Python_Regex - Fatal编程技术网

在python正则表达式中使用锚来获得精确匹配

在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(非

我需要验证一个版本号,该版本号由“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
(非单词字符),而且你不需要使用前瞻(the
(?=…)

请尝试:
“\bv(\d+)”
如果需要捕获int,如果不需要,请尝试:
“\bv\d+”

Edit:您可能希望对Python正则表达式使用原始字符串语法,
r“\bv\d+\b”
,因为
“\b”
是常规字符串中的退格字符


编辑2:由于
+
是“贪婪的”,因此不需要或不需要拖尾
\b

非常简单。首先,在模式上设置锚:

"^patternhere$"
现在,让我们总结一下模式:

"^v\d+$"
应该可以了。

只需使用

 \bv\d+\b
或者用
^\bv\d+\b$

完全匹配