4

特定の文字列を置き換える正規表現 repalce コマンドを探しています。HTMLコードでテキストssを置き換えたいとします。<u>ss</u>したがって、私の入力が <p style="">ss</p>出力を見たい場合<p style=""><u>ss</u></p>

しかし、私はそのような言葉を望んでいません

<b>Issues</b>のように置き換えられる<b>I<u>ss</u>es</b>

そのため、完全な単語か単語の一部かをチェックする必要があります。

regex.replace が欲しい

">ss<"&> ss <

これに対するより良い解決策はありますか?

4

6 に答える 6

2

正規表現は HTML で使用するのに最適なツールではないという観察は別として、\bss\b式を使用して、一致させる文字列の前後に単語境界があることを確認できます。

于 2012-07-30T15:25:50.130 に答える
1

次のような単純なソリューションはどうでしょうか。

public string ReplaceHtmlTagContent(string value, string search) {
    return value.Replace(">" + search + "<", "><u>" + replace + "</u><")
}
于 2012-07-30T15:43:34.020 に答える
1
  string input = "<p style="">ss</p>  <b>Issues</b>";
  string pattern = "(?<=\>)ss(?=\<)";
  string replacement = "<u>ss</u>";
  Regex rgx = new Regex(pattern);
  string result = rgx.Replace(input, replacement);
  Console.WriteLine("Original String: {0}", input);
  Console.WriteLine("Replacement String: {0}", result);
于 2012-07-30T15:31:59.377 に答える
1

より良い解決策は、HTML パーサー ライブラリを使用し、html を解析してタグを置き換えることです。チェックアウトHTML アジリティ パック

データが特定の形式であることがわかっているために正規表現の使用を主張する場合は、次の正規表現で十分です。

[>]\s?ss\s?[<]
  • [>] はタグを閉じる
  • [<] は開始タグです
  • \s はオプションの空白です
  • ssはパターンです
于 2012-07-30T15:24:25.343 に答える
1

正規表現を使用して html を解析しないでください。正規表現は、HTML がコンテキストフリーである通常の言語用に設計されています。

HTML Dom パーサーを強くお勧めします

于 2012-07-30T15:24:44.493 に答える
0

ここであなたが何を望んでいるのか正確にはわかりませんが、これの何が問題なのですか:

dataString = dataString.Replace(">ss<", "><u>ss</u><").Replace("> ss <", "><u> ss </u><");
于 2012-07-30T15:35:20.407 に答える