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

时间:2014-01-12 07:01:31

标签: 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);

这是如何运作的:

input: test,test test
testtest

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

1 个答案:

答案 0 :(得分:9)

这是因为您使用了扫描仪,而scan.next只拨打了test,test

调试这类事情的好方法是在调用System.out.println(input)的语句之前执行replaceAll