У меня есть следующий HTML
<p>Some text <a title="link" href="http://link.com/" target="_blank">my link</a> more
text <a title="link" href="http://link.com/" target="_blank">more link</a>.</p>
<p>Another paragraph.</p>
<p>[code:cf]</p>
<p><cfset ArrFruits = ["Orange", "Apple", "Peach", "Blueberry", </p>
<p>"Blackberry", "Strawberry", "Grape", "Mango", </p>
<p>"Clementine", "Cherry", "Plum", "Guava", </p>
<p>"Cranberry"]></p>
<p>[/code]</p>
<p>Another line</p>
<p><img src="http://image.jpg" alt="Array" />
</p>
<p>More text</p>
<p>[code:cf]</p>
<p><table border="1"></p>
<p> <cfoutput></p>
<p> <cfloop array="#GroupsOf(ArrFruits, 5)#" index="arrFruitsIX"></p>
<p> <tr></p>
<p> <cfloop array="#arrFruitsIX#" index="arrFruit"></p>
<p> <td>#arrFruit#</td></p>
<p> </cfloop></p>
<p> </tr></p>
<p> </cfloop></p>
<p> </cfoutput></p>
<p></table></p>
<p>[/code]</p>
<p>With an output that looks like:</p>
<p><img src="another_image.jpg" alt="" width="342" height="85" /></p>
Я пытаюсь написать регулярное выражение, которое удалит все <p>
или </p>
, и всякий раз, когда оно находит </p>
, оно заменяет его переводом строки.
Пока мой шаблон выглядит так:
/\<p\>(.*?)(<\/p>)/g
И я заменяю матчи на:
$1\n
Все выглядит хорошо, но также заменяет содержимое внутри тегов [code][/code]
, которое в этом случае не должно заменять теги <p>
, поэтому в результате я бы хотел избавиться от <p>
тегов, когда содержимое не внутри тегов [code]
.
Я никогда не смогу получить правильное отрицание, я знаю, что это будет что-то вроде
\<p\>^\[code*\](.*?)(<\/p>)
Но, очевидно, это не работает: -)
Может кто-нибудь помочь мне с этим регулярным выражением?
Кстати, я знаю, что вообще не следует использовать регулярные выражения для разбора HTML. Я полностью осознаю это, но, тем не менее, для этого конкретного случая я бы хотел использовать регулярное выражение.
Заранее спасибо