如何修复以下正则表达式?
How to fix the following RegEx?
我有以下代码。我使用不区分大小写的模式修饰符,因此它会发现任何情况,但我想要的是替换为与模式完全匹配的字符,保持大小写。我该如何解决这个问题?
String str = "Ten tender tEens";
String substr = "te";
str = str.replaceAll("(?i)"+substr, "("+substr+")");
System.out.println( str );
期望的输出:
(Te)n (te)nder (tE)ens
收到输出:
(te)n (te)nder (te)ens
你必须使用
str = str.replaceAll("(?i)("+substr+"?)", "()");
这将创建一个组并替换该组。
您需要使用捕获组。
str = str.replaceAll("(?i)("+substr+")", "()");
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(""));
结合这些步骤您可以使用(作用相同):
String substr = "te";
str = str.replaceAll("(?i)("+substr+")", "()");
我有以下代码。我使用不区分大小写的模式修饰符,因此它会发现任何情况,但我想要的是替换为与模式完全匹配的字符,保持大小写。我该如何解决这个问题?
String str = "Ten tender tEens";
String substr = "te";
str = str.replaceAll("(?i)"+substr, "("+substr+")");
System.out.println( str );
期望的输出: (Te)n (te)nder (tE)ens
收到输出: (te)n (te)nder (te)ens
你必须使用
str = str.replaceAll("(?i)("+substr+"?)", "()");
这将创建一个组并替换该组。
您需要使用捕获组。
str = str.replaceAll("(?i)("+substr+")", "()");
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(""));
结合这些步骤您可以使用(作用相同):
String substr = "te";
str = str.replaceAll("(?i)("+substr+")", "()");