gpt4 book ai didi

模式中包含\Uxxxxxxxx 字符的 C# 正则表达式

转载 作者:太空狗 更新时间:2023-10-29 20:58:04 25 4
gpt4 key购买 nike

Regex.IsMatch( "foo", "[\U00010000-\U0010FFFF]" ) 

抛出:System.ArgumentException:以相反顺序解析“[-]”- [x-y] 范围。

查看\U00010000 和\U0010FFF 的十六进制值,我得到:第一个字符为 0xd800 0xdc00,第二个字符为 0xdbff 0xdfff。

所以我想我确实遇到了一个问题。为什么用\U组成的Unicode字符在字符串中分成两个字符?

最佳答案

它们是 surrogate pairs .查看值 - 它们超过 65535。char 只是一个 16 位值。如何用 16 位表达 65536?

不幸的是,文档中并不清楚 .NET 中的正则表达式引擎如何(或是否)处理不在基本多语言平面中的字符。 (正则表达式文档中的\uxxxx 模式只涵盖 0-65535,就像\uxxxx 作为 C# 转义序列一样。)

您真正的正则表达式是否更大,或者您实际上只是想查看其中是否有任何非 BMP 字符?

关于模式中包含\Uxxxxxxxx 字符的 C# 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/364009/

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