替换括号之间的每件事
我有一个字符串
a = "stringWithBraces()"
我想创建以下字符串
"stringWithBraces(text)"
我如何使用正则表达式?
我尝试了:
a.replaceAll("\(.+?\)", "text");
但要明白:
stringWithBraces()
您可以使用LookAheads并做类似的事情:
(?<=().*?(?=))
live demo
这样做:
String a = "stringWithBraces()";
a = a.replaceAll("(?<=\().*?(?=\))", Matcher.quoteReplacement("text"));
System.out.println(a);
输出:
stringWithBraces(text)
请注意,与replaceAll()
有关,replacement
字符串具有一些特殊的字符。因此,您最有可能使用Matcher.quoteReplacement()
来逃脱这些并安全。
您可以使用以下方式:
a = a.replaceAll("\((.*?)\)", "(text)");
您必须用 (text)
+
至少需要一个char,此处添加的?
表示最短的匹配,所以" ...(。(...(。(..."。(...(。"。
a.replaceAll("\(.*?\)", "(text)");
您可能已经打算使用replaceFirst
;虽然我认为不是。
您还可以让DOT .
匹配新的线字符,以进行多行匹配项,使用dot_all选项(?s)
:
a.replaceAll("(?s)\(.*?\)", "(text)");