用于在大括号之间插入文本的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)");