首页 > 解决方案 > 正则表达式不匹配以 4 到 5 位数字开头的数值

问题描述

我想匹配除以 4 到 5 位开头的数字以外的所有数值,并且我编写了一个匹配以 4 到 5 位开头的数字的正则表达式,但我想反转这个匹配。

c = '475555'
e = (re.search(r'(\A4[0-9]{5})',c).group(0))

我该如何解决这个问题?

标签: pythonregex

解决方案


此正则表达式将执行以下操作:

\b(?!4\d{0,4}\b)\d+\b

想法是使用负前瞻来丢弃以零开头的数字,4并且可以再有零到四位数字。

正则表达式演示

Python代码:

import re

s = '475555 4 41 412 4123 4123 412345'

print(re.findall(r'\b(?!4\d{0,4}\b)\d+\b', s))

印刷

['475555', '412345']

如果你想一次匹配一个数字作为整个字符串,你可以使用这个正则表达式:

^(?!4\d{0,4}$)\d+$

正则表达式演示作为整个输入


推荐阅读