Regex 正则表达式提取特定字符串并将其分配给变量

Regex 正则表达式提取特定字符串并将其分配给变量,regex,Regex,我有以下字符串: Jul 20 16:47:43 chefawsdeveastbck2 dhclient[1036]: bound to 10.205.5.122 -- renewal in 1797 seconds. Jul 17 18:07:15 chefawsdeveastbck2 Keepalived_vrrp[937]: VRRP_Instance(PC_VI) Sending gratuitous ARPs on eth0 for 10.205.5.121 Jul 17 18:07:

我有以下字符串:

Jul 20 16:47:43 chefawsdeveastbck2 dhclient[1036]: bound to 10.205.5.122 -- renewal in 1797 seconds.
Jul 17 18:07:15 chefawsdeveastbck2 Keepalived_vrrp[937]: VRRP_Instance(PC_VI) Sending gratuitous ARPs on eth0 for 10.205.5.121
Jul 17 18:07:10 chefawsdeveastbck2 Keepalived_vrrp[937]: VRRP_Instance(PC_VI) Sending gratuitous ARPs on eth0 for 10.205.5.121
Jul 17 18:07:10 chefawsdeveastbck2 Keepalived_vrrp[937]: VRRP_Instance(PC_VI) setting protocol VIPs.
Jul 17 18:07:10 chefawsdeveastbck2 Keepalived_vrrp[937]: VRRP_Instance(PC_VI) Entering MASTER STATE
Jul 17 18:07:09 chefawsdeveastbck2 Keepalived_vrrp[937]: VRRP_Instance(PC_VI) Transition to MASTER STATE
Jul 17 18:07:09 chefawsdeveastbck2 Keepalived_vrrp[937]: VRRP_Instance(PC_VI) Transition to Backup STATE
我只需要从上面的字符串中提取“主状态”、“备份状态”、“备份状态”,它们总是出现在“VRRP_实例(PC_VI)进入”或“VRRP_实例(PC_VI)转换到”之后。 现在,我写了以下内容:

.*(VRRP_Instance.*.[EnteringTransitionto]+ )(?P<instance_state>.+)
*(VRRP_实例。*.[输入TransitionTo]+)(?P.+)

显然,这是不对的,同时也要考虑其他因素。请提供帮助。

如果主状态和备份状态是您仅有的状态,那么您可以像这样使用正则表达式
((?:\bMASTER\b | \bBACKUP\b)STATE)$
多行(m),忽略大小写(i)和全局(g)修饰符。

如果主状态和备份状态是您仅有的状态,那么您可以像这样使用正则表达式
((?:\bMASTER\b | \bBACKUP\b)STATE)$
多行(m),忽略大小写(i)和全局(g)修饰符。

如果主状态和备份状态是您仅有的状态,那么您可以像这样使用正则表达式
((?:\bMASTER\b | \bBACKUP\b)STATE)$
多行(m),忽略大小写(i)和全局(g)修饰符。

如果主状态和备份状态是您仅有的状态,那么您可以像这样使用正则表达式
((?:\bMASTER\b | \bBACKUP\b)STATE)$
和多行(m),忽略大小写(i)和全局(g)修饰符

/VRRP_Instance\(PC_VI\) (?:Entering|Transition to) ((?:MASTER|[bB]ackup) STATE)/


您只需要使用alternation来查找两个可能的键字符串,而不是尝试匹配其中的任何单个字母

例如:

.*VRRP_Instance.*.(Entering|Transition to) (?P<instance_state>.+
*VRRP_实例。*.(输入|转换到)(?P+

您只需使用alternation查找两个可能的键字符串,而不是尝试匹配其中的任何单个字母

例如:

.*VRRP_Instance.*.(Entering|Transition to) (?P<instance_state>.+
*VRRP_实例。*.(输入|转换到)(?P+

您只需使用alternation查找两个可能的键字符串,而不是尝试匹配其中的任何单个字母

例如:

.*VRRP_Instance.*.(Entering|Transition to) (?P<instance_state>.+
*VRRP_实例。*.(输入|转换到)(?P+

您只需使用alternation查找两个可能的键字符串,而不是尝试匹配其中的任何单个字母

例如:

.*VRRP_Instance.*.(Entering|Transition to) (?P<instance_state>.+
*VRRP_实例。*.(输入|转换到)(?P+

只是想澄清一下,文本块--是每一行都是一个单独的字符串,还是整个文本块都是一个字符串?是的,每一行都是一个单独的字符串。您使用的语言/工具是什么,预期的输出是什么?我想指定值“主状态”和“备份状态”我正在使用Splunk工具。为了澄清,文本块——每一行是一个单独的字符串,还是整个块是一个字符串?是的,每一行都是一个单独的字符串。您使用的是什么语言/工具,以及预期的输出是什么?我想指定值“MASTER state”和“备份状态”转换为变量实例状态,用于各自的行。我使用的是Splunk工具。只是为了澄清,文本块——每行是一个单独的字符串,还是整个块是一个字符串?是的,每行都是一个单独的字符串。您使用的是什么语言/工具,预期的输出是什么?我想分配值“主状态”“和“备份状态”转换为变量实例状态,用于各自的行。我使用的是Splunk工具。只是为了澄清,文本块--每行是一个单独的字符串,还是整个块是一个字符串?是的,每行是一个单独的字符串。您使用的是什么语言/工具,预期的输出是什么?我想赋值将“主状态”和“备份状态”转换为变量实例_状态,用于各自的行。我正在使用Splunk工具。