用正则表达式分隔一个字符串,java

时间:2016-11-06 13:51:48

标签: java regex

我想分隔一个字符串,但要保留除空格之外的分隔符。

另外,我不想分开asda45aasd6ad等字词。

这是分隔符列表:

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

我尝试了String[] List = o.split("(?<="+delimits+")|(?="+delimits+")");

1 个答案:

答案 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+