2017-06-20 152 views
1

我想把所有不同類型的括號,例如(, {, and [,在一個給定的字符串中使用正則表達式,但我不知道如何去做。 這裏是我當前的代碼:在Java正則表達式中查找括號字符串

String s = "{[()]}"; 
String regexStr = "\\(| \\) | \\[ | \\] | \\{ | \\}"; 
Pattern p = Pattern.compile(regexStr); 
String[] splitStr = p.split(s); 

當我雖然打印陣列,只有一個元素,它是原始的字符串:"{[()]}"。我不確定我的regexStr是否正確,我在OR旁邊添加空格,因爲當我沒有留下空格時,沒有任何內容被添加到數組中。

regexStr在我沒有空格的情況下使用的在線Java正則表達式檢查器中工作,但它似乎在我的代碼中無效。

+0

你可以顯示一些示例輸出嗎? – Sweeper

+0

你不能爲此使用'split'。 split被調用的模式是_boundary_,並且實際上將從拆分結果中刪除。我會從@ brso05下面回答 – jingx

+0

@jingx其實你可以只需要做一些操作,然後你就可以檢查我的答案:) –

回答

1

你可以做這樣的事情:

public static void main(String[] args) throws FileNotFoundException { 
    ArrayList<String> temp = new ArrayList<String>(); 
    String s = "{[()]}"; 
    String regexStr = "[\\{|\\}|\\(|\\)|\\[|\\]]"; 
    Pattern p = Pattern.compile(regexStr); 
    Matcher m = p.matcher(s); 
    while(m.find()) 
    { 
     temp.add(m.group()); 
    } 
    //If you want to add results to an array... 
    String[] results = new String[temp.size()]; 
    for(int i = 0; i < temp.size(); i++) 
    { 
     results[i] = temp.get(i); 
    } 
    for(String a : results) 
    { 
     System.out.println(a); 
    } 
} 
+0

注意你必須在你的代碼中做一些修改1-你可以使用'列表 temp = new ArrayList <>();'''''''''''''''''''''''''''''' } \\(\\)\\ [\\]]「'3-打印您的列表,您可以使用'System.out.println(temp);'修復它,您的解決方案將是完美的:) –

1

你爲什麼不直接使用"{[()]}".split("")例如:

String[] spl = "{[()]}".split(""); 
System.out.println(Arrays.toString(spl)); 

輸出

[{, [, (,), ], }] 

解決方案2

如果輸入包含其他字符,那麼你可以先更換它們,並使用例如previouse解決方案:

String s = "{[(hello)java]world}"; 
String[] spl = s.replaceAll("[^\\{\\}\\(\\)\\[\\]]", "").split(""); 

regex demo

+0

可能因爲有可能是其他字符之間?... – brso05

+1

是@ brso05可能,你現在可以檢查我的解決方案 –

+0

好吧,從技術上說這是可行的,但我沒有看到這樣做的任何優勢。事實上,現在恕我直言,最好的答案就是下面的答案,它簡單地遍歷字符串並尋找單個括號字符。它比基於正則表達式的解決方案更高效,而且實際上讀起來更容易。 – jingx

1

你可以嘗試將字符串轉換成字符數組然後遍歷該數組,並且如果存在特定的括號,則使用數組列表來附加

string="Hello)" 
char[] a= string.toCharArray(); 
ArrayList brackets= new ArrayList()<> 
for(char i : a) 
{ 
if(i==')' || any other bracket) 
{ 
brackets.add(i); 
} 
} 
相關問題