I have a log file that I need to search for. The text outside of the brackets is always the same, so to be as precise as I can, I would like to ignore the text inside both square and curved brackets.
So the log is;
[09/May/2022:11:04:05 0000] NSMMReplicationPlugin - process_postop: Failed to apply update (6278e86f000627440000) error (-1). Aborting replication session(conn=5361 op=6)
Where I do not need the date at the start inside the [ ]
or the numbers & text inside both sets of ( )
either side of the (-1)
as the (-1)
part is key to the search.
I just need to search on;
NSMMReplicationPlugin - process_postop: Failed to apply update error (-1). Aborting replication session
I cannot figure this out! I tried a lazy qualifier but as there's ( )
that I need it didn't work;
(?<=NSMMReplicationPlugin - process_postop: Failed to apply update)(.*)(?=error (-1). Aborting replication session)
I somehow need to escape the ( )
to get the -1
part?
CodePudding user response:
We can use the following pattern which divides the text into 4 groups and only uses group 2 and 4.
(\[.*\])(.*)(\(\w*\))(.*)
to get group 2 and 4 we use \2\4
or $2$4
depending on the flavour of regex.
See https://regex101.com/r/v6izps/1 for an example.
Depending on the language and the tools there may not be any need to put brackets around the 1st and 3rd groups.