あなたはすべての必然的な属性名/値でタグ名と一致し、値のみ(または名前の内側<
と>
を交換することができます同様に、データがいかに乱雑であるかによって異なります)。
これはRegex.Replace
一致評価以内に行うことができます。
var s = "<Element><Element value=\"'hello&stack<overflow>'\" value=\"'hi&stack<over flow2 >'\"/></Element>";
var rx = @"((?:<[a-zA-Z][\w:-]*|\G(?!\A))\s+[^\s=<]*=)(""[^""]*"")";
var clean = Regex.Replace(s, rx, m =>
string.Format("{0}{1}", m.Groups[1].Value, m.Groups[2].Value.Replace("&", "&").Replace("<", "<").Replace(">", ">"))
);
// => <Element><Element value="'hello&stack<overflow>'" value="'hi&stack<over flow2 >'"/></Element>
はここC# demo
がregex demoある参照してください。詳細:
((?:<[a-zA-Z][\w:-]*|\G(?!\A))\s+[^\s=<]*=)
- グループ1:
(?:<[a-zA-Z][\w:-]*|\G(?!\A))
から<
、いずれかのASCII文字、0+ワード文字、:
、または-
(<[a-zA-Z][\w:-]*
を参照)、OR(|
)前回の終わり成功した試合(\G(?!\A)
を参照)
\s+
- 1+空白
[^\s=<]*=
- 0+空白文字以外の文字、=
と<
("[^"]*")
- グループ2:
"[^"]*"
- "
、0+ "
以外の文字、その後"
これもチェック:http://stackoverflow.com/questions/42065310/multiple-split-in-string-using -regex – MYGz
素晴らしい。それは私が決めることができなかったことです。ありがとう! – MH175
@MYGz:完了 –