我怎样才能替换<和>在使用正则表达式的xml文件的内容?

时间:2010-01-25 18:56:36

标签: c# .net xml regex replace

如何更换“<”和“>” (在xml文件的内容中),匹配"<"">" (使用预先知道的一组标签)使用正则表达式?

示例:<abc>fd<jkh</abc><def>e>e</def>应该导致: <abc>fd&lt;jkh</abc><def>e&lt;e</def>

必须用正则表达式完成! (没有xml加载等......)

2 个答案:

答案 0 :(得分:2)

我认为模式

<([^>]*<)

将匹配在<之前遇到另一个<的{​​{1}}(因此不属于代码)

......和模式

>

将匹配另一个(>[^<]*)>

之后的>
>

编辑:

这确实有效,但你必须多次传递它。我确信这是一个更纯粹的方法,但这确实有效。

var first = Regex.Replace(@"<abc>fd<jkh</abc><def>e>e</def>",@"<([^>]*?<)",@"&lt;$1");
var final = Regex.Replace(first,@"(>[^<]*?)>",@"$1&gt;");

答案 1 :(得分:0)

s/<(?=[^<>]*<)/&lt;/g
s/>(?<=\>[^<>]*)/&gt;/g

在C#中,

new Regex("<(?=[^<>]*<)").Replace(your_xml_string, "&lt;");
new Regex(">(?<=\>[^<>]*)").Replace(your_xml_string, "&gt;");

未经测试。我手上没有C#。