非字符的Java正则表达式

非字符的Java正则表达式,java,regex,ascii,Java,Regex,Ascii,我正在使用这个小片段 string.replaceAll("[^\\p{ASCII}]","") 我想删除或删除非SCIAICharacter,但我有一个问题,例如,以下字符串正在被删除 final String myString = "cada dia es más cercano a Dios."; 但是á正在被删除,这是225个Ascii字符,我以为这个正则表达式会取代所有的非Ascii字符,但是á是Ascii字符,为什么 也许我完全弄错了。á(a-acute)不是ASCII字符集的一

我正在使用这个小片段

string.replaceAll("[^\\p{ASCII}]","")
我想删除或删除非SCIAICharacter,但我有一个问题,例如,以下字符串正在被删除

final String myString = "cada dia es más cercano a Dios.";
但是á正在被删除,这是225个Ascii字符,我以为这个正则表达式会取代所有的非Ascii字符,但是á是Ascii字符,为什么

也许我完全弄错了。

á
(a-acute)不是ASCII字符集的一部分。这是一个字符,也是拉丁语1补遗UTF-8块的一部分

您可以通过运行以下命令查看它:

"á".codePoints()
   .mapToObj(Integer::toHexString)
   .forEach(System.out::println); // e1
要保留
á
,您可以在模式中明确列出此字符

string.replaceAll("[^\\p{ASCII}á]", "")

或者白名单一个较大的组,例如
p{L}
包含所有字母

No,
a
不是ASCII字符,它是ANSI字符。有一种方法可以转义所有非ASCII字符,但保留字符?sorry@chiperortiz更新了答案,但解决方案将取决于你想做什么。你猜对了,谢谢,伙计。委内瑞拉致以最良好的问候