我需要从字符串中删除一组特殊字符(即[]'?!+-.,
)。
典型的独占解决方案replaceAll("[^a-zA-Z0-9]", "")
不行,因为我只需删除这些字符,并保存包含希腊字符的文本。例如:
public static void test_regex() {
ArrayList<String> tests = new ArrayList<>();
tests.add("------.");
tests.add("+[---].");
tests.add("------?");
tests.add("---]〛");
tests.add("A++[---].");
tests.add("AV[---]S");
for (String s : tests) {
String becomes = s.replaceAll("[.-\\\\,]", "");
System.out.println(s + " becomes <" + becomes + ">");
}
}
应该作为输出
------. becomes <>
+[---]. becomes <>
------? becomes <>
---]〛 becomes <>
A++[---]. becomes <A>
AV[---] becomes <AV>
但我不能。我成功删除了.
和-
[.-]
,但随后我添加了\\[
并打破了所有内容(也尝试了\\\\[
或\\\\\\[
),还有工作前的.
不再工作了。
以哪种方式逃避这些角色?
答案 0 :(得分:4)
您可以使用以下正则表达式替换来删除所有不需要的字符:
String becomes = s.replaceAll("[ \\]\\[.\\\\,+?-]+", "");
[, ], +, ?, |
等。 +
以获得更好的效果。