我正在尝试使用 PowerShell 解析许多日志文件以获取 IP 地址,但在这些文件中,我还有许多误报,实际上是版本号。可能还有更多,但作为第一个开始,我想抓住所有没有前面Version=
的 IP。
我已经尝试了我的正则表达式的许多不同的变体,但没有真正的成功,并且在 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]?))
理想情况下,它应该是这样的:
不匹配版本=10.0.0.1
匹配 10.0.0.1
- 匹配 IPAddress=10.0.0.1
- 匹配 IP=10.0.0.1
等。
添加单词边界 ( b
(:
(?<!Version=)b(?<Address> ... )b
这可以防止匹配在 IP 地址内启动,否则会发生匹配。如果没有单词边界,方括号中的区域将是匹配的:Version=1[0.0.0.1]