gpt4 book ai didi

android - 非拉丁语言环境中的 PatternSyntaxException

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

在我将语言环境切换为“fa”(波斯语)之前,我有一个运行良好的正则表达式。我怀疑希伯来语和阿拉伯语也会发生这种情况(尚不确定是字符还是 RTL 方向导致它中断)。

导致异常的代码行是:

public static final Pattern NAME_REGEX = Pattern.compile(String.format("^[\\w ]{%d,%d}$", 2,24));

(语法很好,它适用于英语和西类牙语)但是当应用程序尝试在“不兼容”的语言环境中编译正则表达式时,我得到以下信息:

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.util.regex.PatternSyntaxException: Syntax error U_REGEX_BAD_INTERVAL near index 8:
^[\w ]{٢,٢٤}$
^
at java.util.regex.Pattern.compileImpl(Native Method)
at java.util.regex.Pattern.compile(Pattern.java:400)
at java.util.regex.Pattern.<init>(Pattern.java:383)
at java.util.regex.Pattern.compile(Pattern.java:374)
at com.airg.hookt.config.airGConstant.<clinit>(airGConstant.java:131)

如有任何帮助,我们将不胜感激。谢谢

最佳答案

看起来您正在尝试使用阿拉伯-印度数字指定间隔 (U+0660..U+0669);如果成功的话,我会感到非常惊讶。我从未听说过接受除 ASCII 数字以外的任何内容的正则表达式风格作为正则表达式本身的一部分

您是否还希望 \w 匹配波斯语、希伯来语和阿拉伯语脚本中的字母/数字?这也行不通,但这次是因为 Java 的正则表达式风格存在缺陷。如果你想匹配来自任何书写系统的字符,你需要使用 Unicode 属性,如 \p{L}\p{N}(但参见 here更多详情)。

关于android - 非拉丁语言环境中的 PatternSyntaxException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6810450/

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