Regex Negative Lookbehind для отмены полного захвата - PullRequest
0 голосов
/ 29 мая 2020

Я хочу определять числа, перед которыми нет букв.

пример:

игнорировать : covid19

accept : 19

У меня есть это регулярное выражение: (?<![a-z])(\d+), который использует отрицательный просмотр назад, чтобы проверить, есть ли буквы b4 в числах, и если да, не фиксируйте.

Проблема в том, что если я наберу covid1, то он игнорируется, как ожидалось, но если я наберу covid19 или covid1 + [еще числа] он не игнорируется.

Как мне сделать отрицательный просмотр назад, который сводит на нет весь следующий за ним захват?

1 Ответ

0 голосов
/ 29 мая 2020

Ваше регулярное выражение было очень близко. Хотя с некоторыми изменениями, если вы хотите, чтобы совпадали только числа, т.е. с ним не связано никаких букв.

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

Объяснение вышеуказанного регулярного выражения:

\b - представляет границу слова.

\d+ - соответствует цифре [0-9] один или несколько раз .

\S - соответствует любому непробельному символу.

(?<![\S]) - отрицательное значение look-behind утверждает, что непробельные символы не должны совпадать до и после 1-й группы захвата .

Regular expression visualization

You can find the demo in здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...