我如何使用 Java 正则表达式将土耳其语字符转换为 UTF-8
How I can use Java Regex for Turkish characters to UTF-8
我正在尝试在 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".
搜索到的文本是动态的 changing.Therefore ,如何使用 java 正则表达式模式解决此问题。或者如何转换土耳其语字符(Ex: AYDEMİR convert to AYDEMIR
或 Yıldırım -> Yildirim
)。
抱歉,关于我的语法错误!...
使用Pattern.CASE_INSENSITIVE
and Pattern.UNICODE_CASE
标志:
Pattern p = Pattern.compile("yildirim", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
Pattern.CASE_INSENSITIVE
默认只匹配 US-ASCII 字符集中的字符,不区分大小写。 Pattern.UNICODE_CASE
修改行为以使其匹配所有 Unicode 字符时不区分大小写。
请注意,Java 正则表达式中不区分大小写的 Unicode 匹配是以不区分文化的方式完成的。因此,ı
、i
、I
、İ
被认为是同一个字符。
根据您的用例,如果您想禁用模式中的所有元字符,或者仅使用 Pattern.quote()
[=24= 转义模式的文字部分,您可能需要使用 Pattern.LITERAL
]
中的问题比原题复杂
您可以使用
string=Normalizer.normalize(string, Normalizer.Form.NFD).replaceAll("\p{Mn}", "");
将 "İÖÜŞÇĞıöüşçğ"
转换为 "IOUSCGıouscg"
,这对于 指出的不区分大小写的匹配已经足够了。如果要执行区分大小写的匹配,则必须添加 .replace('ı', 'i')
以匹配 ı
和 i
。
git hub url 用于替换土耳其字符 https://gist.github.com/onuryilmaz/6034569
在 java string.matches(".*[İÖÜŞÇĞıöüşçğ]*.")
中将检查字符串是否包含土耳其宪章。
我正在使用这个模式。
public static boolean isAlphaNumericWithWhiteSpace(String text) {
return text != null && text.matches("^[\p{L}\p{N}ın\s]*$");
}
\p{L} matches a single code point in the category "letter".
\p{N} matches any kind of numeric character in any script.
我正在尝试在 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".
搜索到的文本是动态的 changing.Therefore ,如何使用 java 正则表达式模式解决此问题。或者如何转换土耳其语字符(Ex: AYDEMİR convert to AYDEMIR
或 Yıldırım -> Yildirim
)。
抱歉,关于我的语法错误!...
使用Pattern.CASE_INSENSITIVE
and Pattern.UNICODE_CASE
标志:
Pattern p = Pattern.compile("yildirim", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
Pattern.CASE_INSENSITIVE
默认只匹配 US-ASCII 字符集中的字符,不区分大小写。 Pattern.UNICODE_CASE
修改行为以使其匹配所有 Unicode 字符时不区分大小写。
请注意,Java 正则表达式中不区分大小写的 Unicode 匹配是以不区分文化的方式完成的。因此,ı
、i
、I
、İ
被认为是同一个字符。
根据您的用例,如果您想禁用模式中的所有元字符,或者仅使用 Pattern.quote()
[=24= 转义模式的文字部分,您可能需要使用 Pattern.LITERAL
]
您可以使用
string=Normalizer.normalize(string, Normalizer.Form.NFD).replaceAll("\p{Mn}", "");
将 "İÖÜŞÇĞıöüşçğ"
转换为 "IOUSCGıouscg"
,这对于 .replace('ı', 'i')
以匹配 ı
和 i
。
git hub url 用于替换土耳其字符 https://gist.github.com/onuryilmaz/6034569
在 java string.matches(".*[İÖÜŞÇĞıöüşçğ]*.")
中将检查字符串是否包含土耳其宪章。
我正在使用这个模式。
public static boolean isAlphaNumericWithWhiteSpace(String text) {
return text != null && text.matches("^[\p{L}\p{N}ın\s]*$");
}
\p{L} matches a single code point in the category "letter".
\p{N} matches any kind of numeric character in any script.