如果我有这个字符串:
String line = "This, is Stack; Overflow.";
并希望将其拆分为以下字符串数组:
String[] array = ...
因此数组包含以下输出:
["This",",","is","Stack",";","Overflow","."]
我应该将什么正则表达式放入 split() 方法中?
最佳答案
只需根据单词字符和非单词字符之间存在的空格或边界分割输入,反之亦然。
String s = "This, is Stack; Overflow.";
String parts[] = s.split("\\s|(?<=\\w)(?=\\W)");
System.out.println(Arrays.toString(parts));
\s
匹配任何类型的空白字符,\w
匹配单词字符和 \W
匹配非单词字符。
-
\s
匹配空格字符。 -
(?<=\\w)
正向后查找,断言匹配前面必须有单词字符(a-z
、A-Z
、0-9
、_
)。 (?=\\W)
正向前瞻断言匹配项后面必须跟有非单词字符(单词字符以外的任何字符)。所以这个(?<=\\w)(?=\\W)
正则表达式仅匹配边界而不匹配字符。因此根据匹配空间和边界分割输入将为您提供所需的输出。
或
String s = "This, is Stack; Overflow.";
String parts[] = s.split("\\s|(?<=\\w)(?=\\W)|(?<=[^\\w\\s])(?=\\w)");
System.out.println(Arrays.toString(parts));
输出:
[This, ,, is, Stack, ;, Overflow, .]
关于java - Java 中替换字符串时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28793807/