我有一个字符串
a = "stringWithBraces()"
我想创建以下字符串
"stringWithBraces(text)"
如何使用正则表达式实现此目的?
我试过了:
a.replaceAll("\\(.+?\\)", "text");
但是得到这个:
stringWithBraces()
答案 0 :(得分:0)
您可以使用:
a = a.replaceAll("\\((.*?)\\)", "(text)");
您必须使用(text)
答案 1 :(得分:0)
您可以使用前瞻并执行以下操作:
(?<=\().*?(?=\))
这样做:
String a = "stringWithBraces()";
a = a.replaceAll("(?<=\\().*?(?=\\))", Matcher.quoteReplacement("text"));
System.out.println(a);
输出:
stringWithBraces(text)
请注意,与replaceAll()
相关,replacement
字符串有一些特殊字符。因此,您最有可能使用Matcher.quoteReplacement()
来逃避这些并保持安全。
答案 2 :(得分:0)
这个怎么样:
String first = "abc()";
String myVariableString = "def";
first = first.substring(0, first.length()-1)
+ myVariableString
+ first.substring(first.length()-1, first.length());
System.out.println(first);
此更改
"abc()" to "abc(def)"
如果根据我对问题的理解,你想要实现的目标
答案 3 :(得分:0)
+
至少需要一个字符,此处添加的?
表示最短匹配,因此“......(。)...(。)...”将无法继续查找“)...(”
a.replaceAll("\\(.*?\\)", "(text)");
您可能打算replaceFirst
;虽然我不这么认为。
对于多行匹配,您也可以让点.
与新行匹配相匹配,
使用DOT_ALL选项(?s)
:
a.replaceAll("(?s)\\(.*?\\)", "(text)");