Regex 期望正则表达式搜索完整的行或文本
我的expect_输出(buffer)在多行中如下所示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
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