我正在尝试使用以下程序使用正则表达式删除字符串中的某些单词。它可以正确删除,但只考虑大小写。如何使其不区分大小写。我坚持(?1)使用replaceAll方法,但是没有用。
(?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.
您需要将模式中要区分大小写的部分放在(?i) 前面 :
(?i)
System.out.print(sample.replaceAll("(?i)\\b(?:is|the|in|any)\\b"," ")); ^^^^
看见
我已将要删除的关键字周围的空格替换为单词边界(\\b)。之所以出现问题,是因为可能有两个关键字一个接一个地被一个空格隔开。
\\b
如果仅当关键字被 空格 包围时才想删除它们,则可以使用正向前行和后向:
(?i)(?<= )(is|the|in|any)(?= )