解析并删除java正则表达式中的特殊字符

时间:2013-04-07 00:01:03

标签: java regex

所以我们正在查看其他一些正则表达式帖子,我们在一个实例中删除特殊情况时遇到问题;特殊字符在单词的开头。

我们的代码中包含以下行:

String k = s.replaceAll("([a-z]+)[()?:!.,;]*", "$1");

其中s是单数词。例如,当通过对它进行标记来解析句子“(hi hi hi)”,然后对每个标记执行replaceAll函数时,我们得到一个输出:

(hi
hi
hi

我们的正则表达式中缺少什么?

4 个答案:

答案 0 :(得分:3)

您可以使用更简单的方法 - 用空格替换想要的字符:

String k = s.replaceAll("[()?:!.,;]+", " ");

答案 1 :(得分:0)

位置很重要,因此您需要在捕获组之前匹配排除的字符

String k = s.replaceAll("[()?:!.,;]*([a-z]+)[()?:!.,;]*", "$1");

答案 2 :(得分:0)

你的替换只是删除了[a-z]+之后的“特殊字符”,这就是( hi之前留下的原因。

如果您知道s单个字词 你可以:

String k = s.replaceAll("\\W*(\\w+)\\W*", "$1");

String k = s.replaceAll("\\W*", "");

答案 3 :(得分:0)

这可以更简单

试试这个:

String oldString = "Hi There @#$ What is %#your name?@#$@#$ 0123$$"; 
System.out.println(oldString.replaceAll("[\\p{Punct}\\s\\d]+", " ");

输出: 你好,你叫什么名字0123

所以它也接受数字。     .replaceAll(“[\ p {Punct} \ s \ d] +”,“”); 将取代所使用的标点符号,其中包括几乎所有特殊字符。