2013-07-26 210 views
3

標籤之間的文本我有一個這樣的代碼:如何使用正則表達式來替換在記事本++

<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>標籤逐一之間的任何東西。我幾乎可以肯定,這可以做到。

+4

如果你有多層次的嵌套標籤,我不相信正則表達式可以爲你做到這一點。 HTML不是[常規語言](https://en.wikipedia.org/wiki/Regular_language)。 – jpmc26

+0

你能舉一個你想要的結果的例子嗎? – Bohemian

+0

@Bohemian確定我已經更新了這個問題 – 2by

回答

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等都是在放回到我們正在從比賽保持正則表達式捕獲的組。

1

的正則表達式返回「<pre><code></code></pre>之間的事」可能是

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

這使用環視表達式來界定「是被匹配的事」。通常,在嵌套標籤的情況下使用正則表達式是充滿危險的,並且使用專門用於解析xml,html等工作的「真實工具」會更好。我是美麗湯(Python)的忠實粉絲。不熟悉Notepad ++,所以不確定其正則表達式的方言是否與此表達式完全匹配。

相關問題