Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中匹配泰文脚本字符_Java_Regex_Unicode_Thai - Fatal编程技术网

在Java中匹配泰文脚本字符

在Java中匹配泰文脚本字符,java,regex,unicode,thai,Java,Regex,Unicode,Thai,在过去的两个小时里,我有很多性感的时间与泰国脚本字符串滑入我的数据库。它们神秘地排列,在输出时发生变异,没有自然的秩序,是一场灾难 我只想忽略任何带有泰语脚本字符的字符串,但我不知道如何: Pattern.compile(“\\p{Thai}”)在初始化时失败”[ก-๛]"-这样行吗?正确的方法是什么?Thai是一个Unicode块,Unicode块应指定为\p{In…}: Pattern.compile("\\p{InThai}") 当您指的是Unicode脚本时,不应使用Unicode块

在过去的两个小时里,我有很多性感的时间与泰国脚本字符串滑入我的数据库。它们神秘地排列,在输出时发生变异,没有自然的秩序,是一场灾难

我只想忽略任何带有泰语脚本字符的字符串,但我不知道如何:


Pattern.compile(“\\p{Thai}”)
在初始化时失败<代码>”[ก-๛]"-这样行吗?正确的方法是什么?

Thai
是一个Unicode块,Unicode块应指定为
\p{In…}

Pattern.compile("\\p{InThai}") 

当您指的是Unicode脚本时,不应使用Unicode块。例如,一个฿,即Unicode中泰国货币符号泰铢的代码点U+0E3F,是一个
\p{Block=THAI}
ᴀᴋᴀ
\p{InThai}
字符,但它不是
\p{Script=Thai}
ᴀᴋᴀ
\p{IsThai}
字符。它是
\p{Script=Common}
集合的货币符号

希腊语块中有18个代码点不在希腊语脚本中,希腊语脚本中有250个代码点不在希腊语块中


幸运的是,您不必担心泰国人,因为从Unicode 6.0开始,这里只有U+0E3F是一个异常值。您在这方面更加幸运,因为标准Java在Java 7之前不支持Unicode脚本;奇怪但真实。对于JDK7之前版本中的Unicode脚本支持,您必须使用JNIICU regex库,就像谷歌为Android上的Java所做的一样。尽管他们的做法有很多好处,所以即使是JNI,也值得考虑。

“我有很多性感的时间与。。。"你确定你要找的是“性感”这个词吗?我指的是不知道它是如何应用的,但没关系…:-)+1在投票和删除我的答案之前,刚刚尝试了一次测试编译/运行,以确保正确无误。
Pattern
对上述内容感到满意。@Daniel:十年前的Unicode 3.0列表有什么好处,当时Unicode已经升级到了6.0去年的?:(我知道问题是关于Java的,但对于Perl来说,5.6以后的版本
\p{Script=Thai}
可以写成
\p{Thai}
\p{IsThai}
也可以用于向后兼容)。