gpt4 book ai didi

regex - 多行 “[redex]::match()”输出在Powershell中显示为一行

转载 作者:行者123 更新时间:2023-12-03 01:26:56 26 4
gpt4 key购买 nike

我正在使用[regex]::matches($string, $pattern)在日志文件的两行之间搜索行。
我的文件(节选):

-----end-----
AAA
BBB
CCC
-----start-----

我的代码:
$pattern = "-----end-----(.*?)-----start-----"
$string = Get-Content $input_file
$result = [regex]::matches($string, $pattern)
#Output one of the matches:
Write-Host ($result[0].Value + "`n")

输出:
AAABBBCCC

预期产量:
AAA
BBB
CCC

它以某种方式使沿线的换行符松动,这使得输出(匹配模式之间的许多行)几乎不可读。有什么办法解决吗?

最佳答案

您可以通过使用以下方式解决此问题:

$pattern = "(?s)-----end-----(.*?)-----start-----"
$string = Get-Content $input_file -Raw
$result = [regex]::match($string, $pattern)
Write-Host ($result.Value + "`n")

注意:
  • (?s)使.与任何字符匹配,包括换行符
  • Get-Content $input_file -Raw使用换行符将所有文件内容捕获为单个变量
  • [regex]::match获取找到的第一个匹配项
  • 关于regex - 多行 “[redex]::match()”输出在Powershell中显示为一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61802401/

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