用于在大括号之间插入文本的Java正则表达式

时间:2017-04-21 19:55:17

标签: java regex string braces

我有一个字符串

a = "stringWithBraces()"

我想创建以下字符串

"stringWithBraces(text)"

如何使用正则表达式实现此目的?

我试过了:

a.replaceAll("\\(.+?\\)", "text");

但是得到这个:

stringWithBraces()

4 个答案:

答案 0 :(得分:0)

您可以使用:

a = a.replaceAll("\\((.*?)\\)", "(text)");

您必须使用(text)

替换括号内的所有内容

答案 1 :(得分:0)

您可以使用前瞻并执行以下操作:

(?<=\().*?(?=\))

Live Demo

这样做:

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)");