1

いくつかのスタイル部分を消去したい html コードがあります。正規表現が必要であることはわかっていますが、正規表現を生成する方法や、C# コードに適用する方法さえわかりません。以下は元の文字列のサンプルです。

<p style="color: #000000; text-transform: none; letter-spacing: normal; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; word-spacing: 0px; white-space: normal; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px;">

そして、置換操作後に取得したい出力は次のとおりです。

<p> 

スタイル属性を取り除きたい。そして、私はすべての出現に対してこれを行う必要があります<p ...>

この種の仕事についてはたくさんの例がありますが、私はこれについて本当に混乱しました. したがって、解決策の手がかりは素晴らしいでしょう。前もって感謝します。

4

2 に答える 2

3

一致がどのように機能するかを学ぶための正規表現チュートリアル(例)を実際に見つけてください。その後、置換がより簡単になります...

string output = Regex.Replace(input, @"(?<=<p)[^>]+", "");

デモを参照してください。

style 属性のみを削除するには、おそらくこれを使用できます。

string output = Regex.Replace(input, @"(?<=<p)\s*style=""[^""]+""", "");

<pstyle 属性が(任意の数のスペースを含む) の直後にある場合、これは機能しないことに注意してください。

デモを更新しました


html の任意の場所で属性スタイルを削除するには、おそらく使用できます (前のものよりも少し安全かもしれません):

string output = Regex.Replace(input, @"(?<=<p)([^>]*?)\s*style=""[^"">]+""", "$1");

再更新されたデモ

于 2013-08-14T09:33:20.307 に答える
0

C# でそれを行う方法はわかりませんが、bash 正規表現の一般的な例を使用すると、次のようになります。

echo "$pattern" | sed -r 's/(<p).*(>)/\1\2/'

どこ:

(<p) ----- Captures the opening bracket with p
.*   ----- Anything inbetween up to the next ">"
()   ----- Captures the closing bracket
\1\2 ----- Gives you back the two captured things, 
           in this order, with no space inbetween

それが役立つことを願っていますが、繰り返しますが、C# で自分で置き換える方法を調べる必要があります。

于 2013-08-14T09:35:17.960 に答える