/ / C#正規表現と一括置換-C#、正規表現、文字列

C#Regexと一括置換 - c#、正規表現、文字列

文字列にab:tag_xタグがいくつか出現します。

タグの形式:

<ab:tag_x contents="some text" src_id="some id">

各タグをその属性の1つの値である「コンテンツ」に置き換えるにはどうすればよいですか?

例:

<ab:tag_x contents="some text1" src_id="some id"> -> some text1
<ab:tag_x contents="some text2" src_id="some id"> -> some text2

ありがとう、 LG

回答:

回答№1は1

磨く必要があるかもしれませんが、ここに私が得たものがあります。

class Program
{
static void Main()
{
string data = "<data><ab:tag_x contents="some text1" src_id="some id"><br/><ab:tag_x contents="some text2" src_id="some id"></data>";
string pattern = "<ab:tag_x.*?contents="(.*?)".*?>";
string replacement = "$1";
string result = Regex.Replace(data, pattern, replacement);

Console.WriteLine(result);
}
}

パターンがどのように機能するかを理解または変更するには、このMSDNを読んでください。 正規表現言語.

置換文字列の機能を理解または変更するには、このMSDNを読んでください。 正規表現の置換.

HTH


回答№2の場合は0

私は次のことをお勧めします:

string result = Regex.Replace(myhtml,
"<ab:tagx[^>]+contents="([^"]*)"[^>]*>",
"$1");

これは処理します:

  • の前の任意の数の属性 contents 属性
  • 後の任意の数の属性 contents 属性
  • 開始タグまたは自己終了タグ
  • 空白の内容(contents=""
  • タグ内のLF文字(これが使用しなかった理由です) .*?)。

前提条件:

  • 属性値は二重引用符で区切られます。
  • 等号の前後に空白文字はありません。
  • タグと contents 属性は常に小文字です。
  • すべてのタグには contents 属性(値が空白であっても)。