【发布时间】:2016-01-08 12:35:29
【问题描述】:
在替换 Xml 文档中的无效数字字符引用时需要一些正则表达式帮助。
由于XmlWriter 中的一个已知错误,我们在生产中使用的一些 Xml 数据变得不可读,在该错误中,当您编写 XML 实体时分号会被丢弃。不幸的是,由于某种奇怪的原因,生产环境没有在最新的 .Net 框架上运行,这导致大量此类数据被插入到数据库中,现在我必须找到一个修复程序来读取和修复这些数据不知何故。
一个误解的 XML 示例(在下面的 XML 中查找 ฝ& 和 Σ):
<TestInvalidUnicodeReading Desc="año € Σ Æ Jako efektivnB;jší se nám jeví pořฝání tzv. st𕧭nictvím našich an࿜h dealerů v 𐳬hผh a na MoravB, které probBhnou v pr᛻Bhu září a října.bddb26e234c5452aab7720c581e137f7" />
现在为了解决这个问题,我设计了以下 RegEx solution 并在 C# 中使用它来查找匹配项并添加缺少的分号,这部分工作:
&((?:#([0-9]+)|#x([0-9a-fA-F]+)|([0-9a-zA-Z]+))[?&0-9a-zA-Z ])
现在问题出在 ฝ& 部分。
因为当上面的 RegEx 匹配上一个匹配时,下一个 ฝ& 将被跳过。有人可以帮我解决这个 RegEx 问题吗?
【问题讨论】: