正则表达式-如何从较宽的数字模式中排除4位数字

塞巴斯蒂安

确实尝试浏览和搜索此特定问题是否以前已经发布过,所以我希望这里不要问一个明显的问题。

我的问题:我有一个regex表达式,模式匹配的几种可能的标准由管道分隔。我对所有这些都没问题,但我基本上要:

  • 查找任何介于4到6位之间的数字的表达式(无论字符串中的位置如何)
  • 从此模式表达式中排除可能与本世纪的年份相关的内容(因此,以20开头,后跟两位数字)

因此,例如,我想匹配:4149、20259、202046,但想排除2019,因为它是指年份而不是我要搜索的代码。

当前,我尝试应用此表达式(仅表达式的最后一部分):| \ d {4,6} ?! 20 \ d {2}),但是它无法正常工作。我知道前面的表达式很好,并且能够注意到\ d {4,6}在这种情况下一旦添加“ exclusion”就停止​​工作,因此我假设我没有使用?!正确地。请问您对此有何建议?

编辑:解决了!非常感谢您的即时回答(真的很惊讶,几乎没有其他解决方案如此之快)。抱歉,我只能选择其中一个,其他所有都可以根据我的需要进行调整和可行,我只是发现这是最吸引人的,并且可以满足我的需求。

病毒

如果我不确定单词边界是否是表明边界的最佳选择(也许\D更好),则可以尝试:

\b(?!20\d\d\b)\d{4,6}\b

观看在线演示


  • \b -字边界。
  • (?!20\d\d\b) -负前瞻:没有立即数20,后接两位数字和单词边界。
  • \d{4,6} -四到六位数。
  • \b -字边界。

正则表达式可视化

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章