您需要将模式中要区分大小写的部分放在
(?i)前面 :
System.out.print(sample.replaceAll("(?i)\b(?:is|the|in|any)\b"," ")); ^^^^看见
我已将要删除的关键字周围的空格替换为单词边界(
\b)。之所以出现问题,是因为可能有两个关键字一个接一个地被一个空格隔开。
如果仅当关键字被 空格 包围时才想删除它们,则可以使用正向前行和后向:
(?i)(?<= )(is|the|in|any)(?= )
看见

您需要将模式中要区分大小写的部分放在
(?i)前面 :
System.out.print(sample.replaceAll("(?i)\b(?:is|the|in|any)\b"," ")); ^^^^看见
我已将要删除的关键字周围的空格替换为单词边界(
\b)。之所以出现问题,是因为可能有两个关键字一个接一个地被一个空格隔开。
如果仅当关键字被 空格 包围时才想删除它们,则可以使用正向前行和后向:
(?i)(?<= )(is|the|in|any)(?= )
看见