Java逻辑代码 - 从String中删除一些文本

时间:2010-12-23 20:18:24

标签: java replaceall

我想从一个忽略区分大小写的非常大的文本中删除任何“快乐”句子。以下是一些大文本句子:

  1. “她很高兴。我喜欢这样。”

  2. “他快乐的儿子”

  3. “他一整天都很开心”

  4. “塔莎很开心”

  5. “选择以下其中一项:很难过 - 很高兴 - 在哭泣”

  6. 我的初始代码是:

    String largeText = "....";  // The very large text here.
    String removeText = "is happy";
    largeText = largeText.replaceAll( "(?i)" + removeText , "" ); 
    

    此代码可以正常使用第1,3,4,5号句子。但是我不想将它从第2句删除,因为它有另一种含义。 我该怎么做?

2 个答案:

答案 0 :(得分:4)

在模式周围使用\b来检测字边界。即:

String largeText = "....";  // The very large text here.
String removeText = "is happy";
largeText = largeText.replaceAll( "(?i)\\b" + removeText + "\\b" , "" ); 

答案 1 :(得分:0)

您可能希望查看原子零宽度断言 - 与字符串中的位置匹配的模式(例如单词边界),而不是文本本身

之前曾问过这个问题;有关详细信息,请参阅此链接:

java String.replaceAll regex question