正则表达式只删除特殊字符而不删除其他语言字母

Ash*_*mar 4 java regex string regex-negation

我使用正则表达式从名称中删除特殊字符.该表达式将删除除英文字母之外的所有字母.

public static void main(String args[]) {
    String name = "Özcan Sevim.";
    name = name.replaceAll("[^a-zA-Z\\s]", " ").trim();
    System.out.println(name);
}
Run Code Online (Sandbox Code Playgroud)

输出:

zcan Sevim
Run Code Online (Sandbox Code Playgroud)

预期产出:

Özcan Sevim 
Run Code Online (Sandbox Code Playgroud)

我得到了不好的结果,因为我这样做,正确的方法是删除基于ASCII码的特殊字符,以便其他字母不会被删除,有人可以帮助我使用只删除特殊字符的正则表达式.

YCF*_*F_L 9

你可以使用\p{IsLatin}\p{IsAlphabetic}

name = name.replaceAll("[^\\p{IsLatin}]", " ").trim();
Run Code Online (Sandbox Code Playgroud)

或者删除标点符号只需使用\p{Punct}如下:

name = name.replaceAll("\\p{Punct}", " ").trim();
Run Code Online (Sandbox Code Playgroud)

输出

Özcan Sevim
Run Code Online (Sandbox Code Playgroud)

看一下正则表达式构造摘要的完整列表,并使用可以帮助您的那个.