文字列に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
属性(値が空白であっても)。