删除包含表达的单词?

时间:2014-08-02 19:02:41

标签: java regex string

我希望删除包含" oil"的任何字词。我以为\b抓住任何包含" oil"但似乎只能取代这个词本身:

String str = "foil boil oil toil hello";
str = str.replaceAll("\\boil\\b", "");

输出:

  

箔烫熬你好

期望的输出:

  

您好

2 个答案:

答案 0 :(得分:3)

只需匹配前缀和后缀[a-z]*

匹配(和替换):

/ ?[a-z]*oil[a-z]* ?/

View an online regex demo.

答案 1 :(得分:2)

一个单词边界断言,一方面有一个单词字符,而另一方面却没有。

您可以使用以下正则表达式:

String s = "foil boil oil toil hello";
s = s.replaceAll("\\w*oil\\w*", "").trim();
System.out.println(s); //=> "hello"

或者如果你想严格匹配字母。

String s = "foil boil oil toil hello";
s = s.replaceAll("(?i)[a-z]*oil[a-z]*", "").trim();
System.out.println(s); //=> "hello"