我正在尝试检查包含正确格式版本号的输入字符串。
vX.X.X
其中X可以是任意数量的数字,例如:
v1.32.12 or v0.2.2 or v1232.321.23
我有以下正则表达式:
v([\d.][\d.])([\d])
这不起作用。
我的错误在哪里?
编辑:我还要求字符串的最大长度为20个字符,有没有办法通过正则表达式执行此操作,或者最好只使用常规Python len()
答案 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)