正規表現置換をXMLで使用するにはどうすればよいですか?
私が以下の与えられたテキストを持っていると仮定します:
<test>Hello World</test>
<test1>Hello World</test1>
<test2>Hello World</test2>
<test3>Hellow World</test3>
親タグがタグでない場合、どうすればすべての「HelloWorld」タグ値を置き換えることができtest
ますか?
正規表現置換をXMLで使用するにはどうすればよいですか?
私が以下の与えられたテキストを持っていると仮定します:
<test>Hello World</test>
<test1>Hello World</test1>
<test2>Hello World</test2>
<test3>Hellow World</test3>
親タグがタグでない場合、どうすればすべての「HelloWorld」タグ値を置き換えることができtest
ますか?
Regex
XMLは形式が厳密であるため、XMLの解析に使用できますが、使用はお勧めしません。
使用するLINQ2XML
XElement doc=XElement.Load("yourXML.xml");
foreach(XElement elm in doc.Descendants().Elements().Where(x=>x.Name.LocalName!="test"))
{
if(elm.Value=="hello World")
elm.Value="";//replace here
}
doc.Save("yourXml.xml");
とアサーションRegex
を使用してこれを試してください:negative lookahead
negative lookbehind
(?<!<test>)(Hello World)(?!</test>)
説明:
(?<! subexpression )
ゼロ幅の負のルックビハインドアサーション。
(?! subexpression )
ゼロ幅の負の先読みアサーション。
そして、以下を使用して文字列に置き換えますRegex.Replace
。
Regex.Replace(inputString, "(?<!<test>)(Hello World)(?!</test>)", "New World");