Regex 忽略字符,直到将字符与正则表达式匹配后出现空白

Regex 忽略字符,直到将字符与正则表达式匹配后出现空白,regex,Regex,我有一根绳子 fw[0000]: IN=br1 MAC=00:80:00:00:00:8b SRC=0000::0000:000:0000:0000 DST=0000::1:2 LEN=179 PROTO=UDP DPT=547 Unsolicited IPv6 Packet 并希望提取消息的最后一部分,以便生成捕获 Unsolicited IPv6 Packet 我正在使用当前的正则表达式字符串([^=]*$),这让我 547 Unsolicited IPv6 Packet 但是我被困在

我有一根绳子

fw[0000]: IN=br1 MAC=00:80:00:00:00:8b SRC=0000::0000:000:0000:0000 DST=0000::1:2 LEN=179 PROTO=UDP DPT=547 Unsolicited IPv6 Packet
并希望提取消息的最后一部分,以便生成捕获

Unsolicited IPv6 Packet
我正在使用当前的正则表达式字符串
([^=]*$)
,这让我

547 Unsolicited IPv6 Packet
但是我被困在如何从捕获组中排除
547
。换句话说,捕获最终等号之后的所有内容,同时排除位于等号和它前面的第一个空格之间的内容


这里的
547
只是一个任意值。另一个日志行可能在结束消息文本之前将
PROTO=UDP
作为最后一个键/值对。

如果您的工具或语言可以访问正则表达式捕获组,则您可以将正则表达式表述为消耗所有内容,包括最后一个键=值对:

^.*\b[^=\s]+=[^=\s]+\s+(.*)$

您想要的匹配将显示为第一个捕获组
$1

使用“正向查找”:


(?您可以匹配等号和它后面的第一个“单词”,然后是空格(或
\s+
用于一个或多个空格字符)

另一个选项是太匹配,直到最后一个等号后跟匹配第一个“单词”和1个或多个空格

在组1中捕获至少匹配一个非空白字符,然后匹配其余字符(不包括等号)

^.*=[^=\s]+\s+(\S[^=]+)$

请参阅另一种

什么编程语言?这将在Graylog提取器中使用,该提取器使用Java引擎处理正则表达式。请尝试
=[^\s=]+\s+([^=]*$)
^.*=[^=\s]+\s+(\S[^=]+)$