如何使用正则表达式搜索和替换html标记

时间:2015-09-22 03:05:50

标签: regex search replace

我想用div和/ div搜索和替换html标签p和/ p 仅在blockquote内。示例如下:

<blockquote>
    <p>paragraph 1</p>
</blockquote>
<p>paragraph 1 outside blockquote</p>
<blockquote>
    <p>paragraph 2</p>
    <p>paragraph 3</p>
</blockquote>
<p>paragraph 2 outside blockquote</p>

搜索正则表达式是:

(<blockquote>)(.*?)(p>)(.*?)(</blockquote>)

和替换正则表达式是:

\1\2div>\4

问题是在重复&#34;替换所有&#34;之后,blockquote外面的p标签也会被更改。命令。上面的正则表达式只能搜索和替换一个实例,我必须执行&#34;替换所有&#34;不断命令直到所有p都被替换。有没有办法自动重复正则表达式? (我使用Editpad Pro v.7.2.3)

2 个答案:

答案 0 :(得分:1)

这是许多方面的常见问题解答。正则表达式适用于许多事情,解析平衡分隔符不是其中之一。

您需要阅读有关文档对象模型和XPath的信息。然后将HTML加载到DOM中,使用XPath查找其节点,对它们进行操作,然后将其写回。

答案 1 :(得分:1)

搜索:

(<blockquote>(?:(?!</?blockquote).)*?)<p>(.*?)</p>((?:(?!</?blockquote).)*</blockquote>)

替换为:

\1<div>\2</div>\3

DEMO

另一种方法是一次更换一个标签,减少应该替换所有出现次数的数量。但是,我不知道这是否适用于EditPad。

<强>查找

<p>((?:(?!</?blockquote).)*?)</p>(?=(?:(?!</?blockquote).)*</blockquote>)

替换为:

<div>\1</div>

DEMO