正则表达式匹配不包含一些文本

时间:2012-07-26 00:13:42

标签: regex

我想创建一个正则表达式,找到一个开始前缀和一个在它们之间有段落标记的结束前缀。但是我所说的那个并不符合我的期望。

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

正确匹配 <p>This Should %%%HL_START%%%Work</p><p>This%%%HL_END%%% SHould Match</p>

这也匹配,但我不希望它匹配,因为</p><p>不在开始和结束前缀之间

<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>

1 个答案:

答案 0 :(得分:1)

我觉得正则表达式是正确的解决方案并不是很完全;如果你要进入嵌套的开始和停止标记,你可能没有常规语言......

对于此特定示例,请尝试更改正则表达式以使用[^%]而不是.,以便.*?匹配不能超过%%%%H:_END%%%%

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