Условие ИЛИ для обозначения {} в регулярном выражении - PullRequest
0 голосов
/ 25 марта 2019

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

((?:4903|4905|4911|4936|6333|6759)[0-9]{12}|(?:4903|4905|4911|4936|6333|6759)[0-9]{14}))

Вы можете заметить, что после 4-значных чисел в (?:4903|4905|4911|4936|6333|6759)[0-9] мне нужно либо 12-значное число, либо 14-значное число.Условие, эквивалентное [0-9]{12|14}.

Есть ли способ сделать это?Дайте мне знать, если понадобятся дополнительные разъяснения.

1 Ответ

2 голосов
/ 25 марта 2019

Почему бы не просто '[0-9]{12}($|[0-9]{2}$)'?

>>> regex = re.compile('[0-9]{12}($|[0-9]{2}$)')
>>> for i in range(11, 15):
...     print(f'Match for string of length {i}: {re.match(regex, "0" * i) is not None}')
... 
Match for string of length 11: False
Match for string of length 12: True
Match for string of length 13: False
Match for string of length 14: True

Если вы хотите сопоставить 14-значные числа, которые не заканчиваются концом строки, вам необходимо заменить токен '$' чем-тоостальное, например '?'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...