C#正则表达式仅删除元素名称中的字符,而不替换值

时间:2011-12-08 02:18:04

标签: c# .net xml regex

我想在XML元素标签中删除':',在C#中使用正则表达式。

我知道解析文档是一种方法,而不是正则表达式。但它是一个遗留项目,它使用Regex替换XML Document内容。不是处理XML Document的理想方法,但我无能为力。

我对正则表达式并不擅长,只是无法找到一种方法来替换元素标签中的':'而不是值......

例如 <tag:name> the value with the tag http://www.example.com </tag:name>

我想替换:只在元素名称中使用_而不是值。所以结果应该是:

<tag_name> the value with the tag http://www.example.com </tag_name>

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

这针可以做你想要的:

<[^>]*(:)[^>]*>

第一个模式组将在标记名称中包含(:)。如果您要进行替换,可以将(<[^>]*)(:)([^>]*>)替换为$1_$3,其中$1$3是子模式。

答案 1 :(得分:1)

这对你有用吗?

Regex tagRegex = new Regex("<[^>]+>");
yourXML = tagRegex.Replace(yourXML, delegate(Match thisMatch)
{
   return thisMatch.Value.Replace(":", "_");
});