Friday, March 22, 2019

Regex Match all characters between two strings



Example:
"This is just\na simple sentence".



I want to match every character between "This is" and "sentence". Line breaks should be ignored. I can't figure out the correct syntax.


Answer




For example



(?<=This is)(.*)(?=sentence)


Regexr



I used lookbehind (?<=) and look ahead (?=) so that "This is" and "sentence" is not included in the match, but this is up to your use case, you can also simply write This is(.*)sentence.



The important thing here is that you activate the "dotall" mode of your regex engine, so that the . is matching the newline. But how you do this depends on your regex engine.




The next thing is if you use .* or .*?. The first one is greedy and will match till the last "sentence" in your string, the second one is lazy and will match till the next "sentence" in your string.



Update



Regexr



This is(?s)(.*)sentence



Where the (?s) turns on the dotall modifier, making the . matching the newline characters.



Update 2:



(?<=is \()(.*?)(?=\s*\))


is matching your example "This is (a simple) sentence". See here on Regexr


No comments:

Post a Comment

plot explanation - Why did Peaches&#39; mom hang on the tree? - Movies &amp; TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...