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

标签 c# .net xml regex

我只想使用 C# 中的正则表达式删除 XML 元素标记中的“:”。

我知道解析文档是替代正则表达式的方法。但它是一个遗留项目,它使用正则表达式来替换 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是子模式。

关于C# 正则表达式仅删除元素名称中的字符,而不替换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8425338/

相关文章:

c# - 在 C# 中的页面 OnInit/OnLoad 上添加/删除 session 变量

c# - 使用属性节点解析 Linq To Xml

ruby-on-rails - REXML::Document.new 无法使用 US-ASCII 编码的 XML 进行解析

c# - Entity Framework 函数是否自动转义输入以防止注入(inject)?

C# Mysql 连接问题 - 连接尝试失败

c# - 如何通过 WSHttpBinding 安全性和 GZip 压缩来构建自定义绑定(bind)?

.net - 除了 Windows Phone 7 应用程序之外,我还可以将 Silverlight 用于什么?

c# - 继承相等比较器

c# - 从节点列表中获取节点列表 c# .net

xml - XML 模式可以混合和匹配合格和不合格的命名空间吗?