从字符串中删除所有特殊字符,不包括非拉丁字符

Aki*_*i K 5 java regex string replace

我想从字符串中删除除数字和普通 az 字符之外的所有特殊字符。

我这样做:

text = text.replaceAll("[^a-zA-Z0-9 ]+", "");
Run Code Online (Sandbox Code Playgroud)

这种方式的问题在于它还会删除所有非拉丁字符,如 è、é、ê、ë 和许多其他字符。

非特殊字符(我想保留的那些)是指所有语言的所有数字和所有字母字符,或者至少是尽可能多的。

如何只删除特殊字符?

Sab*_*san 3

您可以尝试\p{L}所有字母和\p{N}所有数字:

text = text.replaceAll("[^\\p{L}\\p{N} ]+", "");
Run Code Online (Sandbox Code Playgroud)