如何使用正则表达式替换Notepad ++中的标记之间的文本

时间:2013-07-26 23:21:23

标签: regex replace notepad++

我有这样的代码:

<pre><code>Some <a href="">HTML</a> code</code></pre>

我需要在<pre><code></code></pre>标记之间转义HTML。我有很多标签,所以我想 - 为什么不让正则表达式为我做。问题是我不知道怎么做。我见过许多使用Google和Stackoverflow的例子,但我无法使用。有人可以帮助我吗?

示例:

<pre><code>Some <a href="http">HTML</a> code</code></pre>

<pre><code>Some &lt;a href=&quot;http&quot;&gt;HTML&lt;/a&gt; code</code></pre>

或者只是一个正则表达式,因此我可以逐个替换<pre><code></code></pre>标记之间的任何内容。我几乎可以肯定这可以做到。

2 个答案:

答案 0 :(得分:1)

返回“<pre><code></code></pre>之间的事物”的正则表达式可能

/(?<=<pre><code>).*?(?=<\/code><\/pre>)/

这使用环绕表达式来分隔“匹配的东西”。通常在嵌套标签的情况下使用正则表达式充满了危险,你最好使用专门为解析xml,html等工作而设计的“真正的工具”。我自己是Beautiful Soup(Python)的忠实粉丝。不熟悉Notepad ++,所以不确定它的正则表达式是否与此表达式完全匹配。

答案 1 :(得分:1)

此正则表达式将匹配锚标记的各个部分  你需要放回去:

<pre><code>([^<]*?)<a href="(.*?)">(.*?)</a>(.*?)</code></pre>

查看live demo,它显示了它正确匹配,并且还显示了被捕获的各个部分,我们将在替换字符串中引用这些部分(见下文)。

使用上面的正则表达式进行以下替换:

<pre><code>\1&lt;a href=&quot;\2&quot;&gt;\3&lt;/a&gt;\4</pre></code>

\1\2等是正则表达式中捕获的组,它们将我们从匹配中保留的内容放回去。