繁体   English   中英

在python正则表达式中使用锚点来获得完全匹配

[英]Using anchors in python regex to get exact match

我需要验证由'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

谢谢

非常直截了当。 首先,在您的模式上放置锚点:

"^patternhere$"

现在,让我们把模式放在一起:

"^v\d+$"

应该这样做。

我想你可能想要\\b (单词边界)而不是\\A (字符串的开头)和\\W (非单词字符),你也不需要使用lookahead( (?=...) )。

尝试: "\\bv(\\d+)"如果需要捕获int, "\\bv\\d+"如果不需要。

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

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

简单地使用

 \bv\d+\b

或用^\\bv\\d+\\b$括起来

完全匹配..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM