I have this string cpu.usage_system;cpu=cpu-total;host=host1 6.94024205748818 1626401140
(graphite metric message with tag support).
I'm trying to match the first part of the string, up to the first occurrence of a space character... but only if that first part of the string doesn't contain ;host=
.
I can match all characters up to the first occurrence of a space with ^([\S]+)
.
I have the feeling I should be using a negative lookahead to check for the absence of ;host=
but I can't figure out how to put it all together.
The idea is to match the first part of the metric label (& tags), see if contains a host tag, if it does contain a host tag... leave it alone. If it doesn't contain a host tag, append one.
This may not be the most elegant solution, depending on what else you need the regex to do, but if you just want to exclude matching lines that contain ;host=
, this lookahead should work:
^(?!.*;host=)([\S]+)