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

Regex 期望正则表达式搜索完整的行或文本,regex,expect,Regex,Expect,我的expect_输出(buffer)在多行中如下所示 status QM1 QM(QM1) Status(Running) CPU: 0.02% Memory: 106MB Queue manager file system: 391MB used, 47.3GB

我的expect_输出(buffer)在多行中如下所示

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)#
尝试了多个regex选项,但我一直得到0,因为没有匹配

regexp/^.*\b(正在运行)\b.*$$qmgrstat
类似,获取“HA状态”的值


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

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

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状态:[^\v]*


祝你好运!

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

HA status:\W*(.*)

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

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

参考,但当我们有多行时无法理解。您如何尝试使用
R
执行正则表达式?使用哪些选项?请注意expect(以及它所基于的语言,Tcl)有着微妙不同的正则表达式语法:它不是PCRE。
\b
意味着一个退格字符,而不是单词边界:我会在这里使用
\s
而不是
\W