Как удалить только время, взятое из журнала IIS по умолчанию, используя регулярное выражение, выбрав последнее вхождение числа, а не IP-адрес - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь убрать только количество времени, которое в моем примере составляет 95, а не IP-адрес 10.0.0.0 в сообщении. Иногда сообщение имеет последний IP-адрес, а иногда нет необходимости выбирать 95 во всех случаях. Я попытался сделать числовой прогноз, как и при выборе последнего IP, но он не работает должным образом.

Пример сообщения журнала:

2019-04-15 19:48:21 2.2.2.2 POST /Communication/Service.svc - 8604 - 1.1.1.1 - - 200 0 0 95 10.0.0.0

Любая помощь в том, как сделать это с помощью регулярных выражений, будет принята с благодарностью.

Вот что я пробовал:

enter code here (\ d +) (?! \ D +)

однако это выбирает следующее:

enter image description here

Как выбрать только время?

1 Ответ

1 голос
/ 16 апреля 2019

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

Для номера ip вы можете использовать формат, подобный ip.Обратите внимание, что он может соответствовать больше, чем диапазон IP.Если вы хотите более точное соответствие, эта страница может быть полезной.

(?<!\S)\d+(?=(?: \d{1,3}(?:\.\d{1,3}){3})?$)

Regex demo

  • (?<!\S) минуссмотреть назад, утверждать, что то, что находится слева, не является символом без пробелов
  • \d+ совпадать с 1 + цифрами
  • (?= Положительный взгляд вперед, утверждать, что прямо справа -
    • (?: \d{1,3}(?:\.\d{1,3}){3})? По выбору соответствует пробел, 1-3 цифры и повторяется 3 раза, совпадая с точкой и 1-3 цифрами
  • $ Утверждение конца строки
  • ) Закрыть позитивный прогноз
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...