gpt4 book ai didi

在多行中捕获的正则表达式适用于 regex101.com 但不适用于 PowerShell

转载 作者:行者123 更新时间:2023-12-03 00:07:16 24 4
gpt4 key购买 nike

这是我正在使用的正则表达式 code (?m)^.*(10(?:\.\d+){3}\/\d+)\s.*\s(\d+).*$假设从线路中捕获子网 IP 和最后 4 位数字。一个异常(exception)是,如果只有子网 IP 直接跟在新行之后,则捕获应在下一行继续。

示例数据:
*> 10.118.130.98/32 172.17.128.161 0 65000 4809 23 8705 8705 8705 8705 i
*> 10.118.130.102/32
172.17.128.161 0 65000 4809 23 285 i

捕获组 1 应包含 10.118.130.98/32 和 10.118.130.102/32,捕获组 2 应包含 8705 和 285。这在 regex101.com 上运行良好,但在 PowerShell 中它只捕获第一行 enter image description here .

最佳答案

我建议使用 -Raw 将文件作为单个文本变量读取,而不是逐行读取,然后使用正则表达式查找仅包含类似 IP 的字符串后跟端口号和换行符的行,并删除这些位置的换行符:

(Get-Content $file -Raw) -replace '(?m)^(\d+(?:\.\d+){3}/\d+)[\r\n]+', '$1' | Set-Content $file

图案详情
  • (?m) - 多行修饰符选项
  • ^ - 行首
  • (\d+(?:\.\d+){3}/\d+) - 第 1 组:1+ 位,然后 3 次重复点和 1+ 位,然后 /和 1+ 位
  • [\r\n]+ - 1 个或多个 CR 或 LF 符号。
  • $1是一个包含 Group 1 值的占位符。

    关于在多行中捕获的正则表达式适用于 regex101.com 但不适用于 PowerShell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59093081/

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