2017-02-22 1 views
1

Я пытаюсь проверить, что строка ввода, содержащая номер версии правильного формата.Регулярное выражение для номера версии (vX.X.X) не работает

vX.X.X 

, где X может быть любое количество числовых разрядов, например:

v1.32.12 or v0.2.2 or v1232.321.23 

У меня есть следующее регулярное выражение:

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

Это не работает.

Где моя ошибка?

EDIT: Я также требую строки, чтобы иметь максимальную длину 20 символов, есть способ сделать это с помощью регулярных выражений или это лучше просто использовать обычный Python LEN()

+0

Вы имеете в виду всю длину цепочки? –

+0

@AvinashRaj Да, строка хранится в переменной 'version', например. 'version =" v0.2.1 "", и я хочу проверить, что общая длина этой переменной составляет <20 символов. – Sithling

+1

Для проверки длины https://regex101.com/r/tMBYzL/1 –

ответ

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, то она немедленно сработает, не выполняя сопоставление на этой конкретной строке.

+0

Спасибо, это работает! – Sithling

+1

, если он сработает для вас, примите этот ответ в качестве решения вашего вопроса – radicarl

+1

@radicarl Done, подлежит 15-минутному ограничению.^_^ – Sithling

0

@Avinash Raj.Your ответ совершенный за исключением одной коррекции. Это позволило бы использовать только 19 символов. Коррекция света

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

см. Этот комментарий http://stackoverflow.com/questions/42390661/regular-expression-for-version-number-vx-x-x-not-working/42390685#comment71929048_42390661. Это должно быть меньше 20. –

Смежные вопросы