2012-07-26 64 views
0

我打算創建一個正則表達式,它找到一個開始前綴和結束前綴之間有段落標籤。但是我所說的那個不符合我的期望。正則表達式匹配不包含一些文本

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

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

這也是在比賽,但我不希望它匹配becasue的</p><p>不bettween開始和結束前綴

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

+0

你的第二個例子的作品,因爲你可以吃了第一個'%%% HL_START %%%'和'最後%%% HL_END %%%之間有足夠的內容'相匹配。 – nickb 2012-07-26 00:17:25

回答

1

我這不正確,正則表達式在這裏是正確的解決方案;如果你做了嵌套的啓動和停止的標記,你可能沒有一個正規的語言......

對於這個具體的例子,嘗試改變正則表達式使用[^%]代替.使得.*?匹配不能走過去在%%%%H:_END%%%%

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