2012-10-14 46 views
1

我奮力實現以下,Java正則表達式,簡單

可以說我有串:

(z) (A (z) (A (z) (A (z) (A (z) (A) ) ) ) ) 

我想寫一個正則表達式是取出已被制動的所有字符的左和右。即我想這回:

(z) (z) (z) (z) (z) (A) 

我已經試過正則表達式的喜歡的組合:(\\s\\S(\\W \\)\\s\\S)

感謝 丹尼爾

+0

只是逃離parens。它們在正則表達式中有特殊的含義。 –

+3

正則表達式不適合解析像這樣的嵌套結構。爲此編寫自己的解析器將爲您提供更好的解決方案。 http://stackoverflow.com/a/133684/1583 – Oded

回答

0

這種表達應該工作:

Pattern.compile("\\(\\s*\\w+\\s*\\)").matcher(input); 

文字括號需要在正則表達式中逃脫,我認爲你有一些額外的成分。我顯示的正則表達式允許在parens中包含的字符之前和之後有空格。

+0

好吧,不用這個代碼工作:Matcher regexMatcher = checkRegex.matcher(「\\(\\ s * \\ w + \\ s * \\)」) ; \t \t而(regexMatcher.find()){\t \t \t如果(regexMatcher.group()長度()= 0!){\t \t \t \t的System.out.println(regexMatcher.group()); \t}} – dgamma3

+0

爲什麼你不按我寫的方式粘貼確切的表達式?你在paren前面使用一個反斜槓。這是錯誤的。 –

+0

好吧,我的代碼甚至不工作,如果我這樣做:\t模式checkRegex = Pattern.compile(「s」); \t \t Matcher regexMatcher = checkRegex.matcher(「\\ w」); – dgamma3