如何用空格分割字符串+在Java中转义初始空格?

时间:2015-02-02 17:02:32

标签: java regex string split

我有:

String s = "Hello    world";

String s = "   Hello    world ";

结果应该是:

String[] splited = s.split("REGEX");
splited[0].equals("   Hello"); \\true
splited[1].equals("world "); \\true

我确实喜欢这样:s.trim().split(" +");但我在splited [0]中丢失了第一个空格,但空间应该保留。

  • 我怎么能用正则表达式来做?

2 个答案:

答案 0 :(得分:1)

限制(开始时为1000个空格)方式:

String[] splited = s.split("(?<!\\A\\s{0,1000})\\s+(?=\\S)");

细节:

(?<!\\A\\s{0,1000}) # not preceded by white-spaces at the start of the string
\\s+                # white-spaces
(?=\\S)             # followed by a non white-space character

或严格限制空格(不适用于制表符或换行符......):

String[] splited = s.split("(?<!\\A {0,1000}) +(?=[^ ])");

答案 1 :(得分:1)

您可以合并否定look ahead/behind assertions

String[] array = s.split("(?<!^\\s*)\\s+(?=\\S)");
  • (?<!^\\s*)匹配字符串+ 0或更多空格的开头
  • (?=\\S)匹配非空白