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>
任何想法?
谢谢!
这个针应该是你想要的:
<[^>]*(:)[^>]*>
第一个模式组将在标记名中包含(:)。如果你想做一个替换,你可以用$1_$3
代替(<[^>]*)(:)([^>]*>)
,其中$1
和$3
是子模式。
这对你有用吗?
Regex tagRegex = new Regex("<[^>]+>");
yourXML = tagRegex.Replace(yourXML, delegate(Match thisMatch)
{
return thisMatch.Value.Replace(":", "_");
});