首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不包含数字5的数字

不包含数字5的数字
EN

Stack Overflow用户
提问于 2018-09-12 15:59:16
回答 1查看 163关注 0票数 1

我试图按照this reply使用负前瞻性来匹配不包含数字5的数字:

代码语言:javascript
复制
echo "aaa 123467890 3456 bbb" | egrep '[(?!5)[:digit:]]+'

颜色输出显示第二个数字是匹配的。我该怎么解决这个问题?

egrep是否有一种将5从类[:digit:]中排除在外的方法?(我进行了多次搜索,但没有找到任何这方面的东西)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-12 17:08:25

正则表达式有两个问题:

  1. egrep (如POSIXExtended正则表达式)根本不支持前瞻性或前瞻性。
  2. 即使是这样,[(?!5)[:digit:]]也是一个等同于[[:digit:]()!?]的字符类。(在字符类中没有任何特殊意义。

不幸的是,egrep也不支持被否定的命名字符类(如在[[:^digit:]]中)。

这只剩下两种选择:

  • 手动计算集差并显式列出它: 白鹭'0-46-9+‘
  • 切换到PCRE,并使用Perl样式的regex。 grep -P '^\D5+‘ (使用双重否定和集合并来计算集合差的技巧:我们匹配任何不是非数字或5的字符) grep -P '(?:(?!5)\d)+‘ (前瞻性版本,修正)。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52299284

复制
相关文章

相似问题

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