1

HTML のブロックに一連の段落があります。ほとんどは、いくつかのハイパーリンク タグを含むテキストでいっぱいです。場合によっては、段落の後に画像のみを含む段落が続くことがあります。そう:

<p1>...text..<a>...</a>...text...</p>
<p2>...text..<a>...</a>...text...</p>
<p3><img></p>
<p4>...text..<a>...</a>...text...</p>

NotePad ++で検索/置換の正規表現を見つけようとしています。これは、画像を含む段落が続く段落に一致します(タグでラップしたい)。

これは、単一の段落に正しく一致するように見えますが、それ以上は一致しません:

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

しかし、次の画像段落に一致するものを追加しようとするとすぐに、正規表現は後方一致を開始して、画像段落の前のすべての段落 (つまり、p2 から p3 ではなく p1 から p3) を包含します。

解決策には、改行に一致するドット文字を含める必要があります(とにかく、段落テキストに改行があります)。

4

1 に答える 1

0

img使用できるタグを含む段落の前の段落に一致するには

<p((?!</p>).)*</p>(?=\s*<p(.(?!</p>))*<img.*?</p>)

およびオプションをチェックする必要がありますRegular expression. matches newline

ネストされた<p>タグがある場合、これは機能しない可能性があることに注意してください。また、段落間に改行を含む可能性のあるスペースのみがあると想定しています。

imgタグ付きの段落を選択範囲に含めたい場合は、

<p((?!</p>).)*</p>\s*<p(.(?!</p>))*<img.*?</p>
于 2013-02-03T17:18:48.313 に答える