2016-11-06 128 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

感谢的人,它的作品! –

相关问题