如何通过 space+ 转义 Java 中的初始 spaces 拆分字符串?
How to split a string by space+ escaping initial spaces in Java?
我有:
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] 中丢失了第一个 space,但 space 应该保留。
- 我怎样才能用正则表达式做到这一点?
有限的(开头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}) +(?=[^ ])");
你可以结合否定 look ahead/behind assertions
String[] array = s.split("(?<!^\s*)\s+(?=\S)");
(?<!^\s*)
匹配字符串开头 + 0
或更多空格
(?=\S)
匹配非空白
我有:
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] 中丢失了第一个 space,但 space 应该保留。
- 我怎样才能用正则表达式做到这一点?
有限的(开头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}) +(?=[^ ])");
你可以结合否定 look ahead/behind assertions
String[] array = s.split("(?<!^\s*)\s+(?=\S)");
(?<!^\s*)
匹配字符串开头 +0
或更多空格(?=\S)
匹配非空白