2015-10-07 87 views
0

我有以下字符串,我想分割並獲取分隔符!使用正則表達式獲取分隔符

例如:

-3/*1   --> [/*] 
3/1   --> [/] 
22/*23/off --> [/*,/] 
-bar/12(2)/14 --> [/,/] 
14/*4(3)  --> [/*] 
1/*7/*11  --> [/*,/*] 

我有這樣的正則表達式的模板:

"\\w|[(]|[)]|[-]" 

,但它不能很好地工作,它刪除不必要的數字和括號,但它提供了額外的空單元格在輸出數組中。

任何想法如何改善它?

謝謝!

EDIT1

我發現這個表達式拆分也適用

"[^/\\*?]" 

但再次 - 它留下空單元輸出數組英寸

回答

1

使用正則表達式:(\/\*|\/)

用法在JS:

"1/*7/*11".match(/(\/\*|\/)/g) => ["/*", "/*"] 
+0

/g是什麼意思? – Shvalb

+0

/g意味着遞歸,它允許獲得所有匹配,不僅是第一個 –

+1

全局匹配(而不是遞歸)...在[標籤:java]將與**循環**'matcher.find()'相同,而不是隻調用它一次 – Mariano

3

做配套,而不是分裂。

Matcher m = Pattern.compile("/\\*?").matcher(s); 
List<String> list = new ArrayList<String>(); 
while(m.find()) { 
    list.add(m.group()); 
} 
System.out.println(list); 
+0

我試過了:Matcher m = Pattern.compile(「/ \ * *?」)。matcher(「 - 3/* 1」); int c = m.groupCount(); and c = 0?!? – Shvalb

+0

ya ,沒有使用任何捕獲組。 –

+0

它工作 - 簽出下面這個答案的答案 - 我試圖看看我能否使它在JAVA中工作。 – Shvalb