试图为aaa!bb @ 123&xyz#编写正则表达式-

时间:2018-11-29 11:53:55

标签: java regex

我想用空格替换字符串中的每个字符,而不是在其中,

  • 数字0至9
  • 英文字母同时使用大写和小写
  • 这些特殊字符: &'(),-._

例如如果我的初始字符串是

aaa!bb@123&xyz#--

然后它应该变成

aaa bb 123&xyz --

有人可以提供实现它的正则表达式吗?

2 个答案:

答案 0 :(得分:0)

您可以使用.replaceAll来实现。此方法将查找字符串中的每个正则表达式匹配项,并将其替换为另一个字符串。

您的代码将如下所示:

String str = "Text/containing+invalid=characters";
String cleanStr = str.replaceAll("[^&'\\(\\),\\-.0-9:A-Z_a-z]", " ");
System.out.println(cleanStr);

更多信息here

答案 1 :(得分:0)

您可以使用取反的字符集,并将所有不想替换的字符都用空格替换。其余任何字符将被替换为空格。这是相同的Java代码。

String s = "abc#1$xyz";
System.out.println("Before: " + s);
System.out.println("After:  " + s.replaceAll("[^\\w &'(),.:-]", " "));

输出以下输出,

Before: abc#1$xyz
After:  abc 1 xyz

如您所见,#$不在否定字符集中,因此将它们替换为空格。