python - 正则表达式不匹配以 4 到 5 位数字开头的数值
问题描述
我想匹配除以 4 到 5 位开头的数字以外的所有数值,并且我编写了一个匹配以 4 到 5 位开头的数字的正则表达式,但我想反转这个匹配。
c = '475555'
e = (re.search(r'(\A4[0-9]{5})',c).group(0))
我该如何解决这个问题?
解决方案
此正则表达式将执行以下操作:
\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+$
正则表达式演示作为整个输入
推荐阅读
- r - 如何使用嵌套图加快反应速度?
- excel - 有没有更好的方法来编写这个 VBA 代码?
- flutter - 小部件库 BoxConstraints 捕获的异常具有负的最小宽度
- javascript - react.js 中的 Openweather api 调用失败
- java - 有没有办法使用 gradle 来混淆 minecraft 1.8.9 的代码?
- java - 将字符串从 EditText 保存到 SQLite
- amazon-web-services - 如何在 CDN 上同时提供静态 HTML 和资产并拥有友好的 URL
- redis - Redis XRANGE:ERR 指定为流命令参数的流 ID 无效
- r - 如何将列拆分为包含原始数据框中的列的数据框?
- azure - 我们能否将 Azure 蓝图分配给资源或资源组