为什么java String.replaceAll正则表达式删除它不应该的字符串的一部分?

Eug*_*mak 3 java regex

我想使用正则表达式从输入字符串中删除不在范围内的所有字符.这是我的代码:

System.out.print("Input: ");
Scanner scan = new Scanner(System.in);
String input = scan.next();
scan.close();
String formattedInput = input.replaceAll("[^a-zA-Z]", "");
System.out.println(formattedInput);
Run Code Online (Sandbox Code Playgroud)

它是如何工作的:

input: test,test test
testtest
Run Code Online (Sandbox Code Playgroud)

为什么它删除了第三次测试?我希望他在这种特殊情况下只删除","和"".

Ray*_*oal 9

这是因为您使用了扫描仪并且scan.next只接听电话test,test.

调试这些事情的好方法System.out.println(input)是在调用语句之前做一个replaceAll.