代码之家  ›  专栏  ›  技术社区  ›  psingh

期望正则表达式搜索完整的行或文本

  •  -1
  • psingh  · 技术社区  · 7 年前

    我的expect\u输出(缓冲区)在多行中如下所示。

    status QM1
    QM(QM1)                                  Status(Running)
    CPU:                                     0.02%
    Memory:                                  106MB
    Queue manager file system:               391MB used, 47.3GB allocated 
    [1%]
    HA role:                                 Primary
    HA status:                               Normal
    HA control:                              Enabled
    HA preferred location:                   Here
    mqa(mqcli)#
    

    尝试了多个正则表达式选项,但我一直得到0,因为不匹配。

    regexp /^.*\b(Running)\b.*$ $qmgrstat 类似,获取“HA状态”的值。

    正确的正则表达式语法是什么。

    3 回复  |  直到 7 年前
        1
  •  1
  •   hansaplast    7 年前

    我不太明白。是否只想匹配 HA status ? 如果是,则此正则表达式将执行以下操作:

    HA status:\W*(.*)
    
        2
  •  0
  •   glenn jackman    7 年前

    如果要在“QM”状态运行时捕获HA状态,可以执行以下操作

    if {[string match {*Status(Running)*} $qmgrstat]} {
        regexp {HA status:\s+(\S+)} $qmgrstat -> status
    }
    
        3
  •  0
  •   Allan    7 年前

    您可以使用以下正则表达式获得整个输出:

    status[^\v]*\vQM[^\v]*\vCPU:[^\v]*\vMemory:[^\v]*\vQueue manager file system:[^\v]*\vHA role:[^\v]*\vHA status:[^\v]*\vHA control:[^\v]*\vHA preferred location:[^\v]*\vmqa[^\v]*#\v
    

    如果要获得状态为的完整文本行,请使用: [^\v]*Status\([^\v]*

    要获取HA状态行,可以使用: HA status:[^\v]*

    祝你好运