首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何匹配除特定数字以外的所有3位数字

如何匹配除特定数字以外的所有3位数字
EN

Stack Overflow用户
提问于 2015-08-09 19:11:56
回答 2查看 1.4K关注 0票数 4

如何匹配除一个特定整数(例如914 )以外的所有三个数字整数。

获取所有3位整数是足够简单的[0=9][0-9][0-9]

尝试像[0-8][0,2-9][0-3,5-9]这样的方法可以从集合中移除更多的整数,而不是914。

我们如何解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-09 19:18:44

使用'|'允许多个模式:

代码语言:javascript
复制
[0-8][0-9][0-9]|9[02-9][0-9]|91[0-35-9]

例如:

代码语言:javascript
复制
>>> import re
>>> matcher = re.compile('[0-8][0-9][0-9]|9[02-9][0-9]|91[0-35-9]').match
>>> for i in range(1000):
...     if not matcher('%03i' % i):
...         print i
... 
914
票数 0
EN

Stack Overflow用户

发布于 2015-08-09 19:24:13

您可以使用负面的前瞻性来添加异常:

代码语言:javascript
复制
\b(?!914)\d{3}\b

单词边界\b确保我们匹配一个数字作为一个整体单词。

regex演示IDEONE演示

代码语言:javascript
复制
import re
p = re.compile(r'\b(?!914)\d{3}\b')
test_str = "123\n235\n456\n1000\n910 911 912 913\n  914\n915 916"
print(re.findall(p, test_str))

输出:

代码语言:javascript
复制
['123', '235', '456', '910', '911', '912', '913', '915', '916']
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31907906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档