gpt4 book ai didi

regex - 在PowerShell中合并两个正则表达式

转载 作者:行者123 更新时间:2023-12-02 23:07:24 25 4
gpt4 key购买 nike

这是我要解析的数据:

10.186.128.0/20 172.17.128.161 0 65000 8788

10.186.128.0/20 172.17.128.161 0 65000 878

10.186.128.0/20 172.17.128.161 0 65000 87

理想情况下,输出应与行开头的IP地址相匹配,并且最后2位或3位或4位数字也应匹配。
所需输出示例:

10.186.128.0/20 8788

10.186.128.0/20 878

10.186.128.0/20 87

我有正则表达式将匹配IP地址"10\.\d*\.\d*\.\d*\/\d\d"
然后我有第二个正则表达式将匹配最后2或3或4位数" \d{4}$| \d{3}$| \d{2}$"
问题是如何在PowerShell中结合使用这两个正则表达式来达到预期的结果?

谢谢

最佳答案

您可以使用

Get-Content $filepath | Select-String '^(10(?:\.\d+){3}/\d+)\s.*\s(\d+)$' -AllMatches | Foreach-Object {$_.Matches} | Foreach-Object {$_.Groups[1].Value + " " + $_.Groups[2].Value}
^(10(?:\.\d+){3}/\d+)\s.*\s(\d+)$正则表达式-请参见 its online demo-匹配项:
  • ^-字符串
  • 的开始
  • (10(?:\.\d+){3}/\d+)-第1组:10,然后是一个点的三个重复和任意1+位数字,然后是/和1+位数字
  • \s.*\s-空格,除换行符以外的任意0+字符,以及尽可能多的空格
  • (\d+)-组2:1个以上数字
  • $-字符串结尾。

  • 所以,
  • Get-Content $filepath读取文件
  • Select-String '^(10(?:\.\d+){3}/\d+)\s.*\s(\d+)$' -AllMatches通过逐行读取文件
  • 从文件中获取所有匹配项
  • Foreach-Object {$_.Matches}一一抓取所有匹配项
  • Foreach-Object {$_.Groups[1].Value + " " + $_.Groups[2].Value}组合组1和2的值。
  • 关于regex - 在PowerShell中合并两个正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59052465/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com