亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何找到所有“((”并將它們替換為“(”?

如何找到所有“((”并將它們替換為“(”?

浮云間 2023-03-17 10:33:42
我得到了一個字符串,我想用一個替換所有連續出現的左括號((5)) → (5)((((5))))→(5)我試過str = str.replaceAll("((", "(");然后我嘗試了正則表達式錯誤str = str.replaceAll("\\((", "(");然后我試過了str = str.replaceAll("\\\\((", "(");我不斷收到同樣的錯誤!
查看完整描述

4 回答

?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

你試過這個嗎?

str = str.replaceAll("\\({2,}", "(");

'\' 是轉義字符,因此每個特殊字符都必須以它開頭。沒有它們,正則表達式將其讀取為用于分組的左括號,并期望有一個右括號。

編輯:最初,我以為他是想恰好匹配 2


查看完整回答
反對 回復 2023-03-17
?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

假設括號不需要配對,例如((((5))應該變成(5),那么下面的代碼就可以了:


str = str.replaceAll("([()])\\1+", "$1");

測試


for (String str : new String[] { "(5)", "((5))", "((((5))))", "((((5))" }) {

    str = str.replaceAll("([()])\\1+", "$1");

    System.out.println(str);

}

輸出


(5)

(5)

(5)

(5)

解釋


(         Start capture group

  [()]      Match a '(' or a ')'. In a character class, '(' and ')'

            has no special meaning, so they don't need to be escaped

)         End capture group, i.e. capture the matched '(' or ')'

\1+       Match 1 or more of the text from capture group #1. As a

          Java string literal, the `\` was escaped (doubled)

$1        Replace with the text from capture group #1

另請參閱regex101.com以獲取演示。


查看完整回答
反對 回復 2023-03-17
?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

您需要轉義每個括號并添加+以說明連續出現的情況:

str = str.replaceAll("\\(\\(+","(");


查看完整回答
反對 回復 2023-03-17
?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

我不確定括號是固定的還是動態的,但假設它們可能是動態的,你可以在這里做的是使用replaceAll然后使用String.Format來格式化字符串。


希望能幫助到你


public class HelloWorld{


 public static void main(String []args){


    String str = "((((5))))";

    String abc = str.replaceAll("\\(", "").replaceAll("\\)","");

    abc =  String.format("(%s)", abc);

    System.out.println(abc);


 }

}

輸出:(5)


((5))我用and嘗試了上面的代碼(((5))),它產生了相同的輸出。


查看完整回答
反對 回復 2023-03-17
  • 4 回答
  • 0 關注
  • 217 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號