2014-09-19 105 views
5

我有一个相当大的String,我需要分割所以我可以把它放到一个数组中。实际上,将会有一个分号,然后是Integer,然后是空格,这是我需要分割的地方。在整数后跟一个空格分开一个字符串

例如说,我有一个String

first aaa;0 second bbb;1 third ccc;2 

我需要,使之成为分裂的:

first aaa;0 
second bbb;1 
third ccc;2 

我以为我可以使用类似:

Pattern pattern = Pattern.compile(^([0-9]*\s"); 
myArray = pattern.split(string_to_split); 

我只是不明白正确的RegEx。

由于任何人考虑看看

而且,它应该被拆分将永远是一个分号模式,其次是只有一个数字,然后的空间。

回答

19

根据下面的正则表达式分割输入的字符串。

(?<=;\\d)\\s 

代码:

String s = "first aaa;0 second bbb;1 third ccc;2"; 
String[] tok = s.split("(?<=;\\d)\\s"); 
System.out.println(Arrays.toString(tok)); 

输出:

[first aaa;0, second bbb;1, third ccc;2] 

说明:

  • (?<=;\d)正回顾后在这里使用。它在;<number>之后设置匹配标记。也就是说,它声明了空格之前的字符必须是分号和数字。
  • (?<=;\d)\s现在它匹配下面的空格字符。
  • 根据匹配的空间拆分输入字符串将为您提供所需的输出。
相关问题