字符串replaceAll(,)方法Java不区分大小写的变量

字符串replaceAll(,)方法Java不区分大小写的变量,java,regex,string,Java,Regex,String,有谁能帮我在java中为变量创建一个正则表达式,这样字符串变量就被认为是不区分大小写的,并用WINDOWS之类的东西来替换Access、Access等每个单词吗 代码如下: $html=html.replaceAll(label, "WINDOWS"); 请注意,label是一个字符串变量 只需使用模式和匹配器。这是密码 Pattern p = Pattern.compile("Your word", Pattern.CASE_INSENSITIVE); Matcher m = p.match

有谁能帮我在java中为变量创建一个正则表达式,这样字符串变量就被认为是不区分大小写的,并用WINDOWS之类的东西来替换Access、Access等每个单词吗

代码如下:

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

请注意,label是一个字符串变量

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

Pattern p = Pattern.compile("Your word", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("String containing words");
String result = m.replaceAll("Replacement word");
使用模式很容易,因为它们不区分大小写

有关详细信息,请参阅


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

html = Pattern.compile(label, Pattern.CASE_INSENSITIVE).matcher(html).replaceAll("WINDOWS");
见:和
JavaDocs

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

或者

html = Pattern.compile(lable, Pattern.CASE_INSENSITIVE)
        .matcher(html).replaceAll("WINDOWS");
只需将“不区分大小写”开关添加到正则表达式:

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

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


为什么不简单地在标签字符串中添加一个不区分大小写的字符串呢<代码>“(?i)”@pst:对不起,弄错了。编辑了我的评论。也许还需要注意replaceAll作为第一个参数的内容。。。然后将其作为答案发布?;-)这是Java代码吗?
$
让我有点困惑:-)这可能是重复的,为什么会有什么不同?str.replaceAll(reg,replacement)与Pattern.compile(reg).matcher(str)完全相同。使用matcher的replaceAll(replacement)不区分大小写。请参阅中的文章javaworld@SriHarshaChilakapati“视情况而定”。与安提克斯的回答相比。@pst对不起,我没有看到他的答案。我花了一些时间来写答案,并搜索链接。当对大字符串使用不区分大小写(与Java默认的区分大小写的replace()方法相反)时,会对内存/性能产生重大影响吗?例如,包含预定义标签(变量)的文档,可以根据某些应用程序逻辑动态替换这些标签。
html.replaceAll("(?i)" + Pattern.quote(label), "WINDOWS");