字符串拆分多个分隔符java

时间:2016-06-23 04:36:07

标签: java regex string split

我正在使用多个分隔符拆分字符串。 分隔符是:

, . @ ? ! _ ' and white space etc. 

以下是我的代码:

String[] tokens = s.split("[!|?|,|.|_|'|@ |\\s]");

输入:

  

他是一个非常好的男孩,不是吗?

拆分后的预期输出为:10个令牌

  


  是
  一个
  很
  很
  好
  男孩
  ISN
  Ť
  他

但是我得到的输出低于11:令牌

  


  是
  一个
  很
  很
  好
  男孩

     

ISN
  Ť
  他

因为两个分隔符的空格和逗号是相邻的,所以它给出了11个令牌。如何获得预期的产出?

2 个答案:

答案 0 :(得分:3)

如果要避免多个连续分隔符导致空字符串,可以使用+来查找组合

s.split("[,.@?!_'\\s]+")

注意: - 正如我在评论中提到的,字符类本身作为字符的OR条件。因此,不需要在字符类中使用|来实现交替,因为它将字面上匹配|

答案 1 :(得分:3)

要匹配多个连续分隔符,请使用+

s.split("[,.@?!_'\\s]+");

您应该考虑使用的另一个正则表达式是:

s.split("[\\W_]+");

这将拆分,以便将任何非单词字符视为分隔符。您的问题没有指定,但它也有您期望的输出。