Java用\\p{片假名}正则表达式替换日文字符

Java replace Japanese characters with \\p{Katakana} regular expression

我已经关注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 检查日语字符的正确语法是什么?

我需要同时支持英文和日文字母

那个正则表达式可以解决问题:

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

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

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