【发布时间】:2010-04-17 20:09:41
【问题描述】:
我有以下 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> 标签,因此,我想摆脱 @ 987654330@ 标签,当[code] 标签内的内容不时。
我永远无法正确否定,我知道它会类似于
\<p\>^\[code*\](.*?)(<\/p>)
但显然这不起作用:-)
谁能帮我解决这个正则表达式?
顺便说一句,我知道我根本不应该使用正则表达式来解析 HTML。我完全意识到这一点,但对于这种特定情况,我还是想使用正则表达式。
提前致谢
【问题讨论】:
-
您使用的是什么正则表达式风格? Javascript?爪哇? 。网?珀尔?蟒蛇?
-
"但是,对于这种特殊情况,我还是想使用正则表达式。" ...但是,我还是想骑自行车去南极洲。
标签: java regex html-parsing