适用于PowerShell Lookbehind的RegeX代码无法在IP地址上匹配

时间:2019-04-25 11:44:03

标签: regex powershell

我正在尝试使用PowerShell解析许多IP地址的日志文件,但是在这些文件中,我还存在许多误报,实际上是版本号。可能还有更多,但首先,我想获取所有Version=之后的IP。

我尝试过Regex的多种变体,但都没有真正的成功,而在regex101.com上进行黑客入侵也没有给我带来任何成果。

(?<!Version=)(?<Address>((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]?))

理想情况下,它应该类似于:

  • 不匹配版本= 1.0.0.0.1

  • 匹配10.0.0.1

  • 匹配IPAddress = 10.0.0.1
  • 匹配IP = 10.0.0.1

1 个答案:

答案 0 :(得分:4)

添加单词边界(\b):

(?<!Version=)\b(?<Address> ... )\b

这可以防止匹配在IP地址内开头。没有单词边界,方括号中的区域将是一个匹配项:Version=1[0.0.0.1]