Regext对尖括号进行编码,但忽略xml标记中使用的括号

本文关键字:xml 编码 Regext | 更新日期: 2023-09-27 18:28:19

如何使用正则表达式创建一个对所有左尖括号<&lt;进行编码的正则表达式。正则表达式需要忽略xml标记中使用的所有<>符号。

例如:

<test> test < test </test>

应转换为

<test> test &lt; test </test>

所以我基本上尽量避免对所有有闭合直角括号的<进行编码。

注意:我注意到XMLDocument.LoadXml(string)方法已经对所有>进行了编码,这些>不是xml标记中使用的左括号和右括号对的一部分。所以我不关心编码这些尖括号

Regext对尖括号进行编码,但忽略xml标记中使用的括号

任何正则表达式解决方案都可能是不可靠的,因为根据定义,格式错误的输入可能是不规则的。一个快速而肮脏的正则表达式,仅当最近的尖括号不是闭括号是时才匹配<

<(?![^<>]*>)

但我可以想象在各种情况下(注释、CDATA部分、属性值中的字符串),这种琐碎的逻辑可能会失败。

在regex101.com上进行实时测试。