Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于在大括号之间插入文本的Java正则表达式_Java_Regex_String_Braces - Fatal编程技术网

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

用于在大括号之间插入文本的Java正则表达式,java,regex,string,braces,Java,Regex,String,Braces,我有一根绳子 a = "stringWithBraces()" 我想创建以下字符串 "stringWithBraces(text)" 如何使用regex实现这一点 我试过这个: a.replaceAll("\\(.+?\\)", "text"); 但请记住: stringWithBraces() 您可以使用以下选项: a = a.replaceAll("\\((.*?)\\)", "(text)"); 您必须用(text)替换括号之间的所有内容。您可以使用lookaheads并执行以下

我有一根绳子

a = "stringWithBraces()"
我想创建以下字符串

"stringWithBraces(text)"
如何使用regex实现这一点

我试过这个:

a.replaceAll("\\(.+?\\)", "text");
但请记住:

stringWithBraces()
您可以使用以下选项:

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

您必须用
(text)

替换括号之间的所有内容。您可以使用lookaheads并执行以下操作:

(?<=\().*?(?=\))
请注意,与
replaceAll()
相关的
replacement
字符串有一些特殊字符。因此,您应该尽可能地使用,以避免这些危险并确保安全。

这一个呢:

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

如果根据我对问题的理解,您想要实现的目标至少需要一个字符,那么此处添加的
表示最短匹配,因此“…(…”不会继续查找“…”

您可能打算先更换,但我认为不是

您还可以让点
匹配新行字符,对于多行匹配, 使用DOT_ALL选项
(?s)


+
必须至少匹配一次,您需要使用
*
。您的意思是想实现如下目标:String first=“(abc)”;String myVariable=“def”;成为String first=“abc(def)”?为什么不使用文本替换?
替换(“()”,“(“+text+”)
?请注意,
”(+text+”)没有任何问题
.hmm我试图避免“(“+variable+”)”我的问题中@user\u mda?“text”是一个变量。所以我不想附加“(“+variable+””),而只是用变量替换大括号之间的内容。为什么要避免这个解决方案@user\u mda?请注意,
“text”
实际上是一个变量。字符串变量可能包含特殊字符,这些字符在替换模式中被专门处理。@WiktorStribiżew感谢您忘记了这一点。它现在已修复。
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)"
a.replaceAll("\\(.*?\\)", "(text)");
a.replaceAll("(?s)\\(.*?\\)", "(text)");