regex Java使用\\p{Katakana}正则表达式替换日语字符

t40tm48m  于 2023-03-04  发布在  Java
关注(0)|答案(2)|浏览(104)

我已经遵循了link
并且用户"slevithan"使用\p{Katakana}提供

public static void main(String[] args) {
    String str = "マイポケット (1).csv";
    str=    str.replaceAll(  "[\\p{Katakana}]", "_");//.replaceAll("\\p{Z}", "_");
    System.out.println(str);
}

但是我得到一个错误:

Exception in thread "main" java.util.regex.PatternSyntaxException: Unknown character property name {Katakana} near index 12
[\p{Katakana}]

我正在使用java 8。使用String replaceAll检查日语字符的正确语法是什么?

i2byvkas

i2byvkas1#

最好的解决方案是在使用负前瞻时使用此正则表达式。

str.replaceAll("(?![-,.,/p{Han}/p{Hiragana}/p{Katakana},\\p{IsAlphabetic}\\p{IsDigit}])[\\p{Punct}\\s]", "_");
esbemjvw

esbemjvw2#

我需要支持英语和日文字母
这个正则表达式很有用

str.replaceAll(  "[/p{Han}/p{Hiragana}/p{Katakana}&&[^\\.^\\p{IsAlphabetic}^\\p{IsDigit}^-]]", "_");

相关问题