Regex для захвата 2 последовательных цифр, но не захватывать, если 3 или более - PullRequest
2 голосов
/ 13 февраля 2020

Например. Если у меня есть 1234X03.04

Я хочу захватить 03 и 04 Но я не хочу 12, 23, 34

Я понимаю:

  • отрицательный взгляд: (?!...)
  • отрицательный взгляд назад: (?<!...)

Но я не знаю, как объединить это в один регулярное выражение. Кто-нибудь может мне помочь? Приветствия.

Ответы [ 2 ]

8 голосов
/ 13 февраля 2020

Вы можете использовать:

(?<!\d)\d{2}(?!\d)
  • (?<!\d) - предыдущий символ не является ди git
  • \d{2} - ровно две цифры подряд
  • (?!\d) - следующий символ не является ди git

Вот демо результатов в PHP. Я думаю, что регулярное выражение PHP близко к Java.

0 голосов
/ 13 февраля 2020

Что вам нужно (?<=\D|\b)\d{2}(?=\D|\b)

(?<=\D|\b)\) - не di git или граница слова перед нашим выражением, но без включения в совпадение.

\d{2} - наш выражение, только два di git, включая его в совпадении.

(?=\D|\b) - не di git или граница слова после нашего выражения, но без включения в совпадение.

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