Какое выражение я должен использовать, чтобы получить желаемые результаты? - PullRequest
1 голос
/ 29 апреля 2019

Для строк типа Cisco 3750 i7706-cm021 10.123.12.34 -> 10.123.34.12 Я хотел бы получить результат Cisco 3750 i7706-cm021 10.123.12.34 ->, используя выражение ^.*(?![\d\.]{12}$). Но вместо этого вся строка соответствует. Какое правильное выражение будет?

1 Ответ

0 голосов
/ 29 апреля 2019

Вы можете использовать регулярное выражение, как

^.*?(?=\b(?:\d{1,3}\.){3}\d{1,3}$)

См. Демоверсию regex и график Regulex :

enter image description here

Детали

  • ^ - начало строки
  • .*? - любые 0+ символов, кроме символов разрыва строки, как можно меньше
  • (?=\b(?:\d{1,3}\.){3}\d{1,3}$) - положительный прогноз, который требует (непосредственно справа от текущего местоположения):
    • \b - граница слова
    • (?:\d{1,3}\.){3} - три повторения от 1 до 3 цифр и точка
    • \d{1,3} - от одной до трех цифр
    • $ - конец строки.

Чтобы получить более точное регулярное выражение IP, см. Как найти или проверить IP-адрес :

^.*?(?=\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$)

См. regex demo

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