【问题标题】:Powershell regex capture until "blank line"Powershell 正则表达式捕获直到“空白行”
【发布时间】:2015-01-23 04:27:49
【问题描述】:

这是当前脚本:

$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}

这成功捕获了“集群:”和“元数据:”之间的所有内容

这是输出的一部分(我希望捕获的部分突出显示)

这非常有效,除了有时输出发生变化并且“元数据:”不再存在。我希望能够捕捉到第一个空白行,或者从我突出显示的第一行可能只有 1 个空格而没有其他内容。

我尝试使用以下内容捕获换行符,但它不起作用。

 $regex = '(?ms)Clusters:(.+?) \n'

任何帮助都会很棒,这可能比我想象的要简单。

【问题讨论】:

    标签: regex powershell


    【解决方案1】:

    我认为这应该可行:

    $regex = '(?ms)Clusters:(.+?)\r\n\s*\r\n'
    

    【讨论】:

    • 完美运行。谢谢!
    【解决方案2】:

    您可以尝试检测双换行符的第一个实例(记住要排除“Cluster”和“Cluster Name”之间的第一个实例),例如:

    $regex = '(?ms)(Clusters:.+?Cluster.+?)[\n\r]{2,}\s*[\n\r]'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 2013-02-01
      • 1970-01-01
      相关资源
      最近更新 更多