I need to extract numbers like 2.268
out of strings that contain the word output
:
Approxmiate output size of output: 2.268 kilobytes
But ignore it in strings that don't:
some entirely different string: 2.268 kilobytes
This regex:
(?:output. ?)([\d\.] )
Gives me a match with 1 group, with the group being 2.268
for the target string. But since I'm not using a programming language but rather CloudWatch Log Insights, I need a way to only match the number itself without using groups.
I could use a positive lookbehind ?<=
in order to not consume the string at all, but then I don't know how to throw away size of output:
without using .
, which positive lookbehind doesn't allow.
CodePudding user response:
Since you are using PCRE, you can use
output.*?\K\d[\d.]*
See the regex demo. This matches
output
- a fixed string.*?
- any zero or more chars other than line break chars, as few as possible\K
- match reset operator that removes all text matched so far from the overall match memory buffer\d
- a digit[\d.]*
- zero or more digits or periods.