我试过两个不同的正则表达式对我来说似乎都是正确的,但是第一个没有返回正确的输出。
我的问题: 我想了解它为什么会给出不同的结果 什么是错误的正则表达式或它的用法。
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
答案 0 :(得分:1)
这是因为在这个正则表达式中:
"\\+$"
你只是在结束锚之前匹配文字+
。
第二个正则表达式在行结束前正确匹配1个或多个反斜杠,但在带有*
的不必要的字符类中正确匹配。第二个正则表达式最好写成:
String output = cleaned_input.replaceAll("\\\\+$", "");