8

谁能帮我在java中为变量创建一个正则表达式,这样字符串变量将被认为是不区分大小写的,并用类似的WINDOWS替换每个单词,如Access、access等?

这是代码:

$html=html.replaceAll(label, "WINDOWS");

请注意,标签是一个字符串变量。

4

4 回答 4

26

只需将“不区分大小写”开关添加到正则表达式:

html.replaceAll("(?i)"+label, "WINDOWS");

注意:如果标签可能包含具有特殊正则表达式意义的字符,例如标签是".*",但您希望标签被视为纯文本(即不是正则表达式),请在标签周围添加正则表达式引号,或者

html.replaceAll("(?i)\\Q" + label + "\\E", "WINDOWS");

或者

html.replaceAll("(?i)" + Pattern.quote(label), "WINDOWS");
于 2012-06-28T02:17:42.850 回答
7

String.replaceAll 相当于创建一个匹配器并调用它的 replaceAll 方法,因此您可以执行以下操作以使其不区分大小写:

html = Pattern.compile(label, Pattern.CASE_INSENSITIVE).matcher(html).replaceAll("WINDOWS");

请参阅:String.replaceAllPattern.compile JavaDocs

于 2012-06-28T00:50:00.167 回答
1

只需使用模式和匹配器。这是代码

Pattern p = Pattern.compile("Your word", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("String containing words");
String result = m.replaceAll("Replacement word");

使用模式很容易,因为它们不区分大小写。

有关详细信息,请参阅

正则表达式匹配

Java:模式和匹配器

于 2012-06-28T00:48:10.433 回答
-1

我认为但不确定您是否希望标签类似于[Aa][cC][cC][eE][sS][sS]

或者做

html = Pattern.compile(lable, Pattern.CASE_INSENSITIVE)
        .matcher(html).replaceAll("WINDOWS");
于 2012-06-28T00:59:45.410 回答