Powershell 正则表达式捕获直到 "blank line"
Powershell regex capture until "blank line"
这是当前脚本:
$VPLEX = plink 192.168.1.235 -l service -pw Mi@Dim7T ./health
$regex = '(?ms)Clusters:(.+?)Meta Data:'
$VPLEX = $VPLEX -join "`r`n"
$VPLEX_Clusters = [regex]::Matches($VPLEX,$regex) | foreach {$_.groups[1].value}
这成功捕获了 "Clusters:" 和 "Meta Data:"
之间的所有内容
这是输出的一部分(我希望捕获的部分突出显示)
除了有时输出发生变化并且 "Meta Data:" 不再存在之外,这非常有效。我希望能够捕获到第一个空白行,或者从我突出显示的第一行可能只有 1 space 而没有其他内容。
我尝试使用以下方法捕获直到换行,但它没有用。
$regex = '(?ms)Clusters:(.+?) \n'
任何帮助都会很棒,这可能比我想象的要简单。
您可以尝试检测双换行的第一个实例(请记住排除 "Cluster" 和 "Cluster Name" 之间的第一个实例),例如:
$regex = '(?ms)(Clusters:.+?Cluster.+?)[\n\r]{2,}\s*[\n\r]'
我认为这应该可行:
$regex = '(?ms)Clusters:(.+?)\r\n\s*\r\n'
这是当前脚本:
$VPLEX = plink 192.168.1.235 -l service -pw Mi@Dim7T ./health
$regex = '(?ms)Clusters:(.+?)Meta Data:'
$VPLEX = $VPLEX -join "`r`n"
$VPLEX_Clusters = [regex]::Matches($VPLEX,$regex) | foreach {$_.groups[1].value}
这成功捕获了 "Clusters:" 和 "Meta Data:"
之间的所有内容这是输出的一部分(我希望捕获的部分突出显示)
除了有时输出发生变化并且 "Meta Data:" 不再存在之外,这非常有效。我希望能够捕获到第一个空白行,或者从我突出显示的第一行可能只有 1 space 而没有其他内容。
我尝试使用以下方法捕获直到换行,但它没有用。
$regex = '(?ms)Clusters:(.+?) \n'
任何帮助都会很棒,这可能比我想象的要简单。
您可以尝试检测双换行的第一个实例(请记住排除 "Cluster" 和 "Cluster Name" 之间的第一个实例),例如:
$regex = '(?ms)(Clusters:.+?Cluster.+?)[\n\r]{2,}\s*[\n\r]'
我认为这应该可行:
$regex = '(?ms)Clusters:(.+?)\r\n\s*\r\n'