2014-07-21 170 views
1

我想通過「(」和「last」)的第一次出現來分割字符串。例如我有一個字符串:recordWith(camera(),smartphone());Java擴展字符串分割正則表達式括號

我想:

 [0] recordWith 
     [1] camera() 
     [2] smartphone() 

我的正則表達式"[\\()]"但這種分裂所有支架。

有人可以幫助我嗎?

回答

1

表達

^([^()]*)\((.*)\)([^()]*)$ 

將輸入串分割爲三個捕獲。

說明:

^$錨匹配整個輸入字符串。

([^()]*)零件找到零個或多個不是圓括號的字符並將它們保存在第一個捕獲組中,外部圓括號表示一個捕獲組。

\(匹配第一個實數括號。

(.*)捕捉中間部分。

\)與最後一個括號相匹配。

([^()]*)找到零個或多個不是圓括號的字符。

使用Notepad ++ 6.6.7檢查正則表達式。無法訪問Java來說明如何使用捕獲的值。

0

您可以使用split()方法,它將在所有情況下在括號和逗號後面是否有空格。

Live demo

String s="recordWith(camera(), smartphone())";  
System.out.println(Arrays.toString(s.split("\\((?!\\))\\s*|\\s*\\)$|,\\s*"))); 

OR

Live demo

System.out.println(Arrays.toString(s.split("\\s*(\\((?!\\))|,|(?<!\\()\\))\\s*"))); 

輸出:

[recordWith, camera(), smartphone()] 
1

查找之前和之後的空格。

String s = "recordWith(camera(), smartphone())"; 
String[] parts = s.split("[(,]\\s+|\\s+\\)$"); 
System.out.println(Arrays.toString(parts)); 

輸出

[recordWith, camera(), smartphone()]