之間的文本我有一個字符串Java的正則表達式插入括號
a = "stringWithBraces()"
我想創建以下字符串
"stringWithBraces(text)"
如何實現這一目標使用正則表達式?
我嘗試這樣做:
a.replaceAll("\\(.+?\\)", "text");
但得到這樣的:
stringWithBraces()
之間的文本我有一個字符串Java的正則表達式插入括號
a = "stringWithBraces()"
我想創建以下字符串
"stringWithBraces(text)"
如何實現這一目標使用正則表達式?
我嘗試這樣做:
a.replaceAll("\\(.+?\\)", "text");
但得到這樣的:
stringWithBraces()
您可以使用此:
a = a.replaceAll("\\((.*?)\\)", "(text)");
必須更換括號之間的每一件事與(text)
嗯我試圖避免「(」+變量+「)」 –
你是什麼意思@user_mda? –
我的問題中的'文字'是一個變量。所以我不想追加「(」+ variable +「)」,而只是用大括號替換變量 –
可以使用向前看符號,做這樣的事情:
(?<=\().*?(?=\))
因此這樣做:
String a = "stringWithBraces()";
a = a.replaceAll("(?<=\\().*?(?=\\))", Matcher.quoteReplacement("text"));
System.out.println(a);
輸出:
stringWithBraces(text)
注意的是,關於replaceAll()
然後replacement
字符串有s青梅特別的性格。所以你應該最有可能使用Matcher.quoteReplacement()
爲了逃避這些和安全。
注意''text「'實際上是一個變量。而一個字符串變量可能包含特殊字符,這些字符會在替換模式中專門處理。 –
@WiktorStribiżew謝謝忘了。現在已經修復了。 – Vallentin
這個怎麼樣:
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)");
您可能打算使用replaceFirst
;儘管我認爲不是。
你也可以讓點.
匹配新行字符,對於MULT行匹配,使用 的DOT_ALL選項(?s)
:
a.replaceAll("(?s)\\(.*?\\)", "(text)");
'+'必須至少一次,你需要使用'匹配* '。 – Vallentin
你的意思是你想實現這樣的東西:String first =「(abc)」; String myVariable =「def」;先成爲String =「abc(def)」? – Yahya
爲什麼不使用文字替換? '.replace(「()」,「(」+ text +「)」)'?請注意''(「+ text +」)「'沒有任何問題。 –