java string.replaceAll方法如何使用正则表达式修剪右端?

时间:2015-06-03 11:09:48

标签: java regex string

我试过两个不同的正则表达式对我来说似乎都是正确的,但是第一个没有返回正确的输出。

我的问题: 我想了解它为什么会给出不同的结果 什么是错误的正则表达式或它的用法。

String cleaned_input = "Hello\n\tWorld, Test\\\\\\\\data\\\\\\";

1. String output = cleaned_input.replaceAll("\\+$", "").trim();
2. String output = cleaned_input.replace("[\\\\*]+$", "").trim(); 

输出1:

Hello
    World, Test\\\\data\\\

输出2:

Hello
    World, Test\\\\data

1 个答案:

答案 0 :(得分:1)

这是因为在这个正则表达式中:

"\\+$"

你只是在结束锚之前匹配文字+

第二个正则表达式在行结束前正确匹配1个或多个反斜杠,但在带有*的不必要的字符类中正确匹配。第二个正则表达式最好写成:

String output = cleaned_input.replaceAll("\\\\+$", "");