首页 > 解决方案 > 使用单词边界,除非数字前有句点,否则如何匹配一串数字?

问题描述

我正在尝试匹配一组引用项目的数字。项目可以用换行符、逗号、冒号、破折号或空格分隔。这些项目不会用句点或@ 符号分隔。

我们\b用来表示项目的开始,但发现这可以捕获各种不希望的匹配项,例如reallythisurl@6001999reallythis.6001999

我们尝试了负前瞻:\b(?!\.)(601999) \b(?!\@)(601999)

但这并没有停止匹配在一段时间或之后出现的数字@

标签: regexpcrenegative-lookaheadnegative-lookbehind

解决方案


只需在后面添加否定的lookbehind:(?<![@.])\b\d+

(?<![@.])- 确保前面的不是@.

\b- 词边界

\d+- 一位或多位数字

演示


推荐阅读