4

私はこのようなコードを持っています:

<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>タグの間のものを 1 つずつ置き換えることができます。これができることはほぼ確実です。

4

2 に答える 2

2

この正規表現は、元に戻す必要があるアンカー タグの部分と一致します。

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

ライブ デモを参照してください。これは、正しく一致していることを示し、さまざまなパーツがグループとしてキャプチャされていることも示しています。これは、置換文字列で参照されます (以下を参照)。

上記の正規表現を次のように置き換えて使用します。

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

などは\1\2一致から保持しているものを元に戻す、正規表現でキャプチャされたグループです。

于 2013-07-27T05:31:32.607 に答える
1

<pre><code>「との間のもの」を返す正規表現は次の</code></pre>ようになります。

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

これは、ルックアラウンド式を使用して「一致するもの」を区切ります。通常、ネストされたタグがある状況で正規表現を使用することは危険を伴います。xml や html などを解析するために特別に作成された「実際のツール」を使用する方がはるかに優れています。私自身、Beautiful Soup (Python) の大ファンです。Notepad++ に慣れていないため、正規表現の方言がこの式と正確に一致するかどうかはわかりません。

于 2013-07-27T03:31:19.610 に答える