PowerShell Lookbehind 的 RegeX 代码在 IP 寻址上不匹配
Posted
技术标签:
【中文标题】PowerShell Lookbehind 的 RegeX 代码在 IP 寻址上不匹配【英文标题】:RegeX code for PowerShell Lookbehind not working matching on IP Addressing 【发布时间】:2019-04-25 11:44:02 【问题描述】:我正在尝试使用 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]?))
理想情况下应该是这样的:
不匹配版本=10.0.0.1
匹配 10.0.0.1
匹配 IPAddress=10.0.0.1 匹配IP=10.0.0.1等等
【问题讨论】:
请编辑问题并添加一些应该匹配和不应该匹配的数据样本。同时,删除所有powershell-version
标签,因为当问题与特定版本有关时应该使用这些标签。
【参考方案1】:
添加单词边界 (\b
):
(?<!Version=)\b(?<Address> ... )\b
这可以防止匹配开始于 IP 地址,否则会发生这种情况。如果没有单词边界,方括号中的区域将匹配:Version=1[0.0.0.1]
【讨论】:
以上是关于PowerShell Lookbehind 的 RegeX 代码在 IP 寻址上不匹配的主要内容,如果未能解决你的问题,请参考以下文章
将lookbehind模式与匹配的正则表达式搜索模式分组以作为整体替换
正则表达式的可变长度lookbehind-assertion替代方案