c# Regex只删除元素名称中的字符,而不替换其值

本文关键字:字符 替换 Regex 删除 元素 | 更新日期: 2023-09-27 18:17:02

我想在XML元素标签中去掉':',在c#中使用正则表达式。

我知道解析文档是代替regex的方法,但这是一个遗留项目,它使用regex来替换XML文档内容。这不是处理XML文档的理想方法,但我无能为力。

我不擅长正则表达式,只是不能找出一种方法来替换':'只从元素标签,而不是值…

例如

<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>

任何想法?

谢谢!

c# Regex只删除元素名称中的字符,而不替换其值

这个针应该是你想要的:

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

第一个模式组将在标记名中包含(:)。如果你想做一个替换,你可以用$1_$3代替(<[^>]*)(:)([^>]*>),其中$1$3是子模式。

这对你有用吗?

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