正则表达式匹配字符串的第一部分(直到第一次出现 space 字符)如果它不包含序列 ;host=
Regex to match first part of string (up to the first occurrence of a space character) if it doesn't contain the sequence ;host=
我有这个字符串 cpu.usage_system;cpu=cpu-total;host=host1 6.94024205748818 1626401140
(带有标签支持的石墨度量消息)。
我正在尝试匹配字符串的第一部分,直到第一次出现 space 字符...但前提是字符串的第一部分不包含 ;host=
.
我可以将 space 第一次出现之前的所有字符与 ^([\S]+)
匹配。
我觉得我应该使用负面前瞻来检查 ;host=
是否存在,但我不知道如何将它们放在一起。
思路是匹配度量标签的第一部分(&标签),看看是否包含主机标签,如果确实包含主机标签...别管它。如果它不包含主机标记,请附加一个。
这可能不是最优雅的解决方案,具体取决于您需要正则表达式执行的其他操作,但如果您只想排除包含 ;host=
的匹配行,则此先行应该有效:
^(?!.*;host=)([\S]+)
我有这个字符串 cpu.usage_system;cpu=cpu-total;host=host1 6.94024205748818 1626401140
(带有标签支持的石墨度量消息)。
我正在尝试匹配字符串的第一部分,直到第一次出现 space 字符...但前提是字符串的第一部分不包含 ;host=
.
我可以将 space 第一次出现之前的所有字符与 ^([\S]+)
匹配。
我觉得我应该使用负面前瞻来检查 ;host=
是否存在,但我不知道如何将它们放在一起。
思路是匹配度量标签的第一部分(&标签),看看是否包含主机标签,如果确实包含主机标签...别管它。如果它不包含主机标记,请附加一个。
这可能不是最优雅的解决方案,具体取决于您需要正则表达式执行的其他操作,但如果您只想排除包含 ;host=
的匹配行,则此先行应该有效:
^(?!.*;host=)([\S]+)