7

<p>CKEditorが説明ボックスに挿入している空のタグをすべて削除しようとしていますが、すべて異なるようです。可能性は次のようです。

<p></p>

<p>(WHITESPACE)</p>

<p>&nbsp;</p>

<p><br /></p>

<p>(NEWLINE)&nbsp;</p>

<p>(NEWLINE)<br /><br />(NEWLINE)&nbsp;</p>

これらの可能性により、段落間に任意の量の空白&nbsp;<br />タグが存在する可能性があり、1つの段落に各種類のタグが存在する可能性があります。

また、タグについてもわかりません。<br />私が見たところ、タグは、、またはである可能性が<br />あり<br/>ます<br>

私はSOで同様の答えを検索しましたが、私が見たすべての答えの中で、それらはすべて、一度にではなく、これらのケースの1つだけに対応しているようです。簡単に言えば、私が求めているのは、<p>英数字のテキストや記号/句読点が含まれていないHTMLからすべてのタグを削除するために使用できる正規表現はありますか?

4

2 に答える 2

17

さて、正規表現を使用してHTMLを解析しないという私の提案と矛盾して、私はそれを行うために正規表現を作成しました。

"#<p>(\s|&nbsp;|</?\s?br\s?/?>)*</?p>#"

これは、次の場合に適切に一致します。

<p></p>

<p> </p> <!-- ([space]) -->

<p> </p> <!-- (That's a [tab] character in there -->

<p>&nbsp;</p>

<p><br /></p>

<p>
&nbsp;</p>

<p>
<br /><br />
&nbsp;</p>

内容:

# /                --> Regex start
# <p>              --> match the opening <p> tag
# (                --> group open.
#   \s             --> match any whitespace character (newline, space, tab)
# |                --> or
#   &nbsp;         --> match &nbsp;
# |                --> or
#   </?\s?br\s?/?> --> match the <br> tag
# )*               --> group close, match any number of any of the elements in the group
# </?p>            --> match the closing </p> tag ("/" optional)
# /                --> regex end.
于 2013-01-10T15:12:03.780 に答える
3

<p>選択した回答はすばらしいですが、タグに。のようなインラインスタイル属性が定義されている場合は機能しません<p style="font-weight:bold">

これに一致する正規表現は次のようになります。

#<p[^>]*>(\s|&nbsp;|</?\s?br\s?/?>)*</?p>#
于 2015-05-06T12:34:26.577 に答える