我正在尝试在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 AYDEMIR
或Yı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不区分大小写的匹配是以不区分文化的方式完成的。因此,
ı
,i
,I
,İ
被视为相同字符。根据您的用例,如果要禁用模式中的所有元字符,或者仅使用
Pattern.LITERAL
转义模式的文字部分,则可能需要使用Pattern.quote()