如何使用正则表达式选择最后一次出现的数字而非IP地址,仅从默认IIS日志中删除时间

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

我试图在消息中的10.0.0.0 ip地址之前删除我的示例中95所用的时间。有时消息具有最后的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

我该如何选择时间?

regex iis regular-language
1个回答
1
投票

您可以使用负面的lookbehind断言,左边的内容不是非空白字符。

对于ip号,您可以选择使用类似ip的格式。请注意,它可以匹配超过ip范围。如果你想要一个更精确的匹配,this page可能会有所帮助。

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

Regex demo

  • (?<!\S)负向lookbehind,断言左边的直接是不是非空白字符
  • \d+匹配1+位数
  • (?=积极向前看,断言右边是什么 (?: \d{1,3}(?:\.\d{1,3}){3})?可选择匹配空格,1-3位数字,重复3次匹配点和1-3位数
  • $Assert字符串的结尾
  • )关闭积极向前看
© www.soinside.com 2019 - 2024. All rights reserved.