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

问题描述 投票:-2回答:3

我的expect_output(缓冲区)如下所示。

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 Status”的值。

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

regex expect
3个回答
0
投票

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

if {[string match {*Status(Running)*} $qmgrstat]} {
    regexp {HA status:\s+(\S+)} $qmgrstat -> status
}

1
投票

不确定我理解。你只想匹配HA status的价值吗?如果是,那么这个正则表达式会这样做:

HA status:\W*(.*)

0
投票

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

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]*

祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.