Java正则表达式 - 如果不是单词的开头,则从字符串中删除短语

时间:2014-12-03 11:50:36

标签: java regex string replace

实施例

"I'am peter and i'm apetering or fadapetering"

短语:宠物

结果:

I'am peter and i'm aering or fadaering"

我需要删除短语例如" pet"如果它不是开头的话!

使用普通的正则表达式时,我遇到了麻烦,因为我也删除了词的开头:

outs = textOuts.replaceAll("\\w+" + givePhrase, "");

每一个都在Strings上。

3 个答案:

答案 0 :(得分:1)

你甚至不需要看一眼:

outs = textOuts.replaceAll("\\B" + givePhrase, "");

正则表达式\B表示“不是单词边界”(与\b“单词边界相反”)。

答案 1 :(得分:0)

(?<!\\s|^)pet

试试这个。参见demo.Replace by empty string

http://regex101.com/r/gJ4uX1/1

答案 2 :(得分:0)

为此使用积极的观察。

String input = "I'am peter and i'm apetering or fadapetering";
System.out.println(
    input
    .replaceAll("(?<=\\w)pet", "")
);

<强>输出

I'am peter and i'm aering or fadaering

注意

特殊构造(命名捕获和非捕获)上查看API