正则表达式匹配字符串的第一部分(直到第一次出现空格字符),如果它不包含序列;主机=



我有这个字符串cpu.usage_system;cpu=cpu-total;host=host1 6.94024205748818 1626401140(支持标记的石墨度量消息(。

我正在尝试匹配字符串的第一部分,直到第一个出现的空格字符。。。但仅当字符串的第一部分不包含CCD_ 2时。

我可以用^([S]+)匹配所有字符,直到空间第一次出现。我觉得我应该使用负面展望来检查;host=的缺失,但我不知道如何将其整合在一起。

这个想法是匹配度量标签的第一部分(&tags(,看看它是否包含主机标签,如果它确实包含主机标签。。。别管它。如果它不包含主机标记,请附加一个。

这可能不是最优雅的解决方案,这取决于您还需要正则表达式做什么,但如果您只想排除包含;host=的匹配行,则这种前瞻性应该有效:

^(?!.*;host=)([S]+)