2016-11-06 77 views
0

我想分開一個字符串,但要保持分隔符除空格。分隔一個字符串,java與正則表達式

此外我想不要分開像asda45aasd6ad這樣的詞。

這是分離的名單:

private static String delimits="[{;}(),#<>*+-=/ ]+"; 

我試圖String[] List = o.split("(?<="+delimits+")|(?="+delimits+")");

+0

你能提供一個完整的字符串的樣本,你會使用它? –

+0

你是什麼意思,像asda45a或asd6ad'這樣的單詞? –

+0

帶數字的詞, 我嘗試做一個詞法分析器。 –

回答

1

您需要調整您的delimits模式排除空間(因爲你不想讓空間的分隔符的結果)並把-放在字符類的末尾,就像在你的表達式中一樣,它形成的範圍在+=之間。然後,只需添加一個| +替代主正則表達式:

String delimits="[{;}(),#<>*+=/-]+"; 
String o = "asda45a or-ro asd6ad"; 
String[] lst = o.split("(?<="+delimits+")|(?="+delimits+")| +"); 
System.out.println(Arrays.toString(lst)); 
// => [asda45a, or, -, ro, asd6ad] 

online Java demo

如果你想與任何空白分裂,與|\\s+更換| +

+1

感謝的人,它的作品! –

相關問題