how do you create a field using regex with the following example below
for example
exsamplefield=cpe:/o:microsoft:windows
I would like to extract microsoft from the above field?
What would be proper regex used to extract this?
cpe:\/(a|o):(?\w+):.*
microsoft will be captured in the named group
For testing, try www.regex101.com
cpe:\/(a|o):(?<fieldname>\w+):.*
Like this:
... | rex field=exsamplefield="^(?:[^:]*:){2}(?<YourNameHere>[^:]+)"
Will it always be in same position?
same position yes but not same letter, this is another example " cpe:/a:microsoft:malicious_software_removal_tool" so I'm looking for a way to distinguish between cpe:/o and cpe:/a
Have you tried any of solution below? They both should work for you. If you want little more specific regex based on your data, you can try this cpe\:\/(o|a)\:(?<YourFieldName>[^\:]+)
. (Basically look for either cpe:/a: or cpe:/o: and capture everything after that till next colon)
Hi mr_t2083
Please use this REX,
am uploading pic as this page will try to remove some characters from REX if directly posted.
& if you want to apply Rex to field itself, refer to this second pic
Thanks
To build a proper regex, you need to describe your data properly, it has to have some reliable characteristics.
With your example above, multiple characteristics are possible, but without further example data it's hard to find those similarities.
This is an example: ^[^:]+:[^:]+:(?<yourfield>[^:]+:)
This one would assume that there is always to parts in that field, seperated by :
, and the value you want to extract is between the second and third :
. If that's true - here's your regex 😉