我有以下代码。我使用不区分大小写的模式修饰符,因此它会找到任何出现的情况,但我想要的是替换为与模式匹配的字符,并保持大小写。我该如何解决这个问题?
String str = "Ten tender tEens";
String substr = "te";
str = str.replaceAll("(?i)"+substr, "("+substr+")");
System.out.println( str );
期望的输出: (Te)n (t)nder (tE)ens
收到的输出: (te)n (te)nder (te)ens
最佳答案
replaceAll()
的工作方式与 matcher(string).replaceAll(exp)
相同:
为了使这项工作正常进行并更好地理解,您可以破坏代码,例如:
String str = "Ten tender tEens";
Pattern pattern=Pattern.compile("(?i)(te)");
Matcher matcher=pattern.matcher(str);
System.out.println( matcher.replaceAll("$1"));
结合使用这些步骤(效果相同):
String substr = "te";
str = str.replaceAll("(?i)("+substr+")", "($1)");
关于java - 如何修复以下正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31198517/