我有一个正则表达式:
((?:4903|4905|4911|4936|6333|6759)[0-9]{12}|(?:4903|4905|4911|4936|6333|6759)[0-9]{14}))
您会注意到,在(?:4903|4905|4911|4936|6333|6759)[0-9]
中的4位数字之后,我需要12位数字或14位数字。等于[0-9]{12|14}
的条件。
有没有办法做到这一点?让我知道是否需要进一步澄清。
答案 0 :(得分:2)
为什么不只是'[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位数字,则需要将'$'
令牌替换为其他内容,例如'?'
。