gpt4 book ai didi

java - 如何连接正则表达式中的范围?

转载 作者:行者123 更新时间:2023-11-30 08:15:12 24 4
gpt4 key购买 nike

我想将两个连接的字符:\uD800\uDC00 更改为 x 但奇怪的是它给出了一个奇怪的字符,有人可以告诉我这里有什么问题吗?当我运行以下代码时:

System.out.println("\uD800\uDC00".replaceAll("([\uD800-\uDBFF]&&['\uDC00'-'\uDFFF'])", "x"));

我得到这个字符作为输出

𐀀

最佳答案

首先,正则表达式中存在语法错误。模式中的“&&”不应该存在。同样,单引号和括号也不应该出现。

上述语法更正是必需的,但还不够。\uD800 是一个“魔法”角色。它与下一个字符组合形成一个 4 字节的 Unicode 代码点:https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates

正则表达式是使用 Unicode 代码点而不是 Java 字符解释的。\uD800\uDC00 是单个 Unicode 代码点 (0x10000),因此正则表达式不匹配。我认为您可能想要排除 16 位范围\u0000 -\uFFFF 之外的所有 Unicode 代码点。所以这可能就是您想要的:

System.out.println("\uD800\uDC00".replaceAll("[^\u0000-\uFFFF]", "x"));

关于java - 如何连接正则表达式中的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29038721/

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