使用正则表达式替换某个字符串 - Java

时间:2016-01-13 10:00:49

标签: java regex

我的目标是替换字符串中的某个子字符串,该子字符串不会改变那些不严格表示子字符串的子字符串。写下来有点令人困惑,所以让我给你看一个例子。

说我有字符串

"StackOverflow Stack Overflow Stacks"

现在我想替换"Stack",如果我要使用

x.replaceAll("Stack", "")

我会得到

"Overflow  Overflow s"

这是不希望的,相反,我想要以下内容:

"StackOverflow Overflow Stacks"

3 个答案:

答案 0 :(得分:2)

使用word boundaries

\\bStack\\b

答案 1 :(得分:2)

您的要求并不完全清楚。

您需要考虑要替换"Stack"的条件。

一个很好的例子是单词边界:x.replaceAll("\\bStack\\b", "")

这将确保替换非字字符所包围的"Stack",而"Stack"的其他实例将保持不变。

您可能希望更具体,只有在被空格包围时才能替换:

  • x.replaceAll("(?<=\\s)Stack(?=\\s)", "") // replaces only "Stack"
  • x.replaceAll("\\sStack\\s", "") // also gets rid of the surrounding whitespace

等等...

答案 2 :(得分:0)

您可以使用字边界来完成此任务:

使用以下代码:

String abc = "StackOverflow Stack Overflow Stacks";
abc = abc.replaceAll("\\bStack\\b", "");

System.out.println(abc);

结果打印为 StackOverflow溢出堆栈