正则表达式负向否定以否定完全捕获

问题描述 投票:0回答:1

我想检测前面没有字母的数字。

示例:

ignore:covid19

accept:19

[我有这个正则表达式:(?<![a-z])(\d+),它使用负数查找来检查数字中是否有字母b4,如果是,则不要捕获。

问题是,如果我键入covid1,则将按预期方式将其忽略,但是如果我键入covid19或covid1 + [更多数字],它将不会被忽略。

我如何在后面进行否定的查找以否定随后的整个捕获?

regex
1个回答
0
投票

您的正则表达式非常接近。尽管进行了一些更改,但如果您只希望数字匹配,即它没有任何字母与之关联。

(?<![\S])(\b\d+\b)
     ^^   ^^   ^^ changes

以上正则表达式的解释:

\b-表示word-boundary.

[\d+-匹配数字[0-9] 一次或多次

\S-匹配任何非空白字符。

(?<![\S])-负向后方断言,在第一个捕获组之前和之后,不应匹配非空白字符。

您可以在here.中找到该演示

© www.soinside.com 2019 - 2024. All rights reserved.