正则表达式编码尖括号,但忽略xml标记中使用的括号

时间:2014-10-29 12:29:40

标签: c# xml regex

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

EG:

<test> test < test </test>

应转换为

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

所以我基本上试图避免编码具有右尖括号的所有<

注意:我注意到XMLDocument.LoadXml(string)方法已编码所有&gt;它不是xml标记中使用的左右括号对的一部分。所以我不关心编码这些尖括号

1 个答案:

答案 0 :(得分:0)

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

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

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

测试live on regex101.com