小编典典

Java正则表达式不区分大小写不起作用

java

我正在尝试使用以下程序使用正则表达式删除字符串中的某些单词。它可以正确删除,但只考虑大小写。如何使其不区分大小写。我坚持(?1)使用replaceAll方法,但是没有用。

package com.test.java;

public class RemoveWords {

    public static void main(String args[])
    {

        // assign some words to string

        String sample ="what Is the latest news today in Europe? is there any thing special or everything is common.";

            System.out.print(sample.replaceAll("( is | the |in | any )(?i)"," "));
    }
}

输出:

what Is latest news today  Europe? there thing special or everything common.

阅读 222

收藏
2020-11-13

共1个答案

小编典典

您需要将模式中要区分大小写的部分放在(?i) 前面

System.out.print(sample.replaceAll("(?i)\\b(?:is|the|in|any)\\b"," "));
                                    ^^^^

看见

我已将要删除的关键字周围的空格替换为单词边界(\\b)。之所以出现问题,是因为可能有两个关键字一个接一个地被一个空格隔开。

如果仅当关键字被 空格 包围时才想删除它们,则可以使用正向前行和后向:

(?i)(?<= )(is|the|in|any)(?= )

看见

2020-11-13