I have a large log file, and I want to extract a multi-line string between two strings: start
and end
.
The following is sample from the inputfile
:
start spam
start rubbish
start wait for it...
profit!
here end
start garbage
start second match
win. end
The desired solution should print:
start wait for it...
profit!
here end
start second match
win. end
I tried a simple regex but it returned everything from start spam
. How should this be done?
Edit: Additional info on real-life computational complexity:
This regex should match what you want:
(start((?!start).)*?end)
Use re.findall
method and single-line modifier re.S
to get all the occurences in a multi-line string:
re.findall('(start((?!start).)*?end)', text, re.S)
See a test here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With