我正在尝试在Java中执行正则表达式操作。但是当我搜索土耳其文字时,我遇到了麻烦。例如;

Search Text = "Ahmet Yıldırım" or "Esin AYDEMİR"

//The e-mail stated in part(Ex: yildirim@example.com) , trying to look in name.
Regex Strings = "yildirim" or  "aydemir".

搜索的文本是动态变化的,因此,如何使用java regex模式解决此问题。或如何转换土耳其语字符(Ex: AYDEMİR convert to AYDEMIRYıldırım -> Yildirim)。

抱歉,我的语法错误!...

最佳答案

使用 Pattern.CASE_INSENSITIVE Pattern.UNICODE_CASE 标志:

Pattern p = Pattern.compile("yildirim", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);

Demo on ideone

默认情况下,Pattern.CASE_INSENSITIVE仅与US-ASCII字符集中的字符区分大小写。 Pattern.UNICODE_CASE修改该行为以使其对所有Unicode字符不区分大小写地匹配。

请注意,Java正则表达式中的Unicode不区分大小写的匹配是以不区分文化的方式完成的。因此,ıiIİ被视为相同字符。

根据您的用例,如果要禁用模式中的所有元字符,或者仅使用 Pattern.LITERAL 转义模式的文字部分,则可能需要使用Pattern.quote()

07-26 08:52
查看更多