3

<p>代わりに、特定のタグ(例)内の最後のスペースをすべて置き換える正規表現を作成するためのヘルプを探しています&nbsp;。大規模なhtmlドキュメント内のすべての未亡人をすばやく修正します。

例えば;

    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus suscipit
    dolor a felis blandit sodales. Donec lectus justo, convallis vitae euismod sit.
    Nullam et tristique&nbsp;dui.</p> 
    <p>Nullam accumsan pellentesque pretium. Morbi tempor egestas lectus, 
    a eleifend enim aliquet varius. Vivamus vitae semper&nbsp;tortor.</p>

この例はhttp://www.petefreitag.com/item/580.cfmで見つけました。

ReReplace(text, " ([^ ]+\r?\n)", "&nbsp;\1", "ALL")

しかし、それはすべての要素のすべての最後のスペースにそれを追加します。

私がこの質問をどのように書いたかを改善する方法についてのアドバイスもありがとう

4

2 に答える 2

2

この問題は見た目よりも少し難しいです。単語が<p>ない要素、1 つの単語のみ、または複数の単語がある要素、または終了タグの前に十分な空白がある要素があるためです</p>。パラグラフ要素内にネストされた要素を使用して、孤立した単語であると思われるものをまったく孤立させないことさえできます。さらに複雑なことに、HTML の多くのバージョンでは、終了タグ</p>は実際にはオプションです。

これらの理由から、正規表現で HTML ファイルを処理するだけでなく、HTML パーサーを使用することをお勧めします。

<p>すべての要素が閉じており、要素内にネストされた要素がなく<p>、すべての<p>要素に複数の単語があることがわかっている場合にのみ、置換を回避できます

(\S)\s+(\S+)\s*</p>

\1&nbsp;\2</p>

必要に応じて、終了タグの前のスペースを維持したい場合は、最後を括弧で囲み、置換文字列\s*に a を追加できます。\3

ただし、HTMLパーサーなしでこのようなことをする前に注意してください。

于 2012-10-12T02:41:41.130 に答える
0

HTMLが整形式(まれ)であり、使用している言語がわからないと仮定すると、一般的な答えは次のとおりです。

Regex: " (?= *</p>)"
Replacement text: "&nbsp;"

正規表現はスペースと一致しますが、先読みを使用して、一致したスペースの後に任意の数(0-n)のスペースが続き、次にターゲットタグが続くことを表明しました。

于 2012-10-12T02:35:28.193 に答える