gpt4 book ai didi

java - 不理解有效 XML 字符集的正则表达式

转载 作者:行者123 更新时间:2023-11-30 05:04:06 25 4
gpt4 key购买 nike

正如 w3c 所描述的,XML 的有效字符是有限的。

我们可以通过下面的正则表达式来识别无效字符:

/*
* From xml spec valid chars:
* #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.
*/
Pattern pattern = Pattern.compile("[^\\x09\\x0A\\x0D\\x20-\\xD7EF\\xE000-\\xFFFD\\x10000-x10FFFF]");

但我不知道为什么这个表达式不是:

 Pattern pattern = Pattern.compile("[^\\x09\\x0A\\x0D\\x20-\\xD7EF\\xE000-\\xFFFD\\x10000-\\x10FFFF]");

错误消息是:

java.util.regex.PatternSyntaxException: Illegal character range near index 49
[^\x09\x0A\x0D\x20-\xD7EF\xE000-\xFFFD\x10000-\x10FFFF]

最佳答案

简单答案:并非每个Unicode代码点都可以在Java中表示为char。这是因为代码点由 21 位数字标识,但 char 只有 16 位宽。因此,以 U+10000 开头的代码点使用两个 char 进行编码:一个高代理,后跟一个低代理。字符串和正则表达式在 char 上工作,而不是在代码点上工作,因此您必须自己翻译它们。

关于java - 不理解有效 XML 字符集的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5699202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com