ozatomic
ozatomic

Reputation: 182

Regex Match That doesn't contain some text

I am tring to create a regex that finds a Start Prefix and an End Prefix that have paragraph tags between them. But the one i have cteated is not working to my expectations.

%%%HL_START%%%(.*?)</p><p>(.*?)%%%HL_END%%%

Correctly Matches <p>This Should %%%HL_START%%%Work</p><p>This%%%HL_END%%% SHould Match</p>

This also matches but i dont want it to match becasue the </p><p> is not in bettween the Start and End Prefix

<p>%%%HL_START%%%One%%%HL_END%%% Some More Text %%%HL_START%%%Here%%%HL_END%%%</p><p>Some more text %%%HL_START%%%Here%%%HL_END%%%</p>

Upvotes: 0

Views: 75

Answers (1)

Carl Walsh
Carl Walsh

Reputation: 7009

I'm not entirely comfortable that regex is the right solution here; if you are getting into nested start and stop markers, you might not have a regular language...

For this specific example, try changing the regex to use [^%] instead of . so that the .*?matching can't go past the %%%%H:_END%%%%

%%%HL_START%%%([^%]*?)</p><p>([^%]*?)%%%HL_END%%%

Upvotes: 1

Related Questions