版本号(vX.X.X)的正则表达式无效

时间:2017-02-22 11:54:00

标签: python regex python-3.x

我正在尝试检查包含正确格式版本号的输入字符串。

vX.X.X

其中X可以是任意数量的数字,例如:

v1.32.12   or  v0.2.2   or v1232.321.23

我有以下正则表达式:

v([\d.][\d.])([\d])

这不起作用。

我的错误在哪里?

编辑:我还要求字符串的最大长度为20个字符,有没有办法通过正则表达式执行此操作,或者最好只使用常规Python len()

2 个答案:

答案 0 :(得分:5)

请注意[\d.]应该匹配数字或点的任何一个字符。

v(\d+)\.(\d+)\.\d+

使用\d+匹配一个或多个数字字符。

示例:

>>> import re
>>> s = ['v1.32.12',  'v0.2.2'  , 'v1232.321.23', 'v1.2.434312543898765']
>>> [i for i in s if re.match(r'^(?!.{20})v(\d+)\.(\d+)\.\d+$', i)]
['v1.32.12', 'v0.2.2', 'v1232.321.23']
>>> 
开始时

(?!.{20})否定前瞻检查匹配前的字符串长度。如果字符串长度至少为20,那么它将立即失败而不对该特定字符串进行匹配。

答案 1 :(得分:0)