如何使用正则表达式替换 XML?
假设我有以下给定的文本:
<test>Hello World</test>
<test1>Hello World</test1>
<test2>Hello World</test2>
<test3>Hellow World</test3>
如果父标签不是test
标签,如何替换所有“Hello World”标签值?
如何使用正则表达式替换 XML?
假设我有以下给定的文本:
<test>Hello World</test>
<test1>Hello World</test1>
<test2>Hello World</test2>
<test3>Hellow World</test3>
如果父标签不是test
标签,如何替换所有“Hello World”标签值?
Regex
可用于解析 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");