Java如果string包含空格或“ - ”以及之前或之后的字符,如何split()

时间:2018-03-21 10:02:03

标签: java regex split

我想分割一个字符串,只要它包含字符“ - ”或者它包含一个空格,但只有在“ - ”或空格之前和之后存在一个字符。

示例:

" test" -> Dont split
"-test" -> Dont split
"test test" -> split
" test test" -> split       
"test-" -> dont split
"test-test" -> split
"a-test" -> split

1 个答案:

答案 0 :(得分:6)

此RegEx与任何"匹配"或" - " (或更多处理多个空格或短划线)由单词字符包围。

(?<=\w)[ -]+(?=\w)

实施例

final String regex = "(?<=\\w)[ -]+(?=\\w)";

System.out.println(Arrays.toString(" test".split(regex)));
System.out.println(Arrays.toString("-test".split(regex)));
System.out.println(Arrays.toString("test test".split(regex)));
System.out.println(Arrays.toString(" test test".split(regex)));
System.out.println(Arrays.toString("test-".split(regex)));
System.out.println(Arrays.toString("test-test".split(regex)));
System.out.println(Arrays.toString("a-test".split(regex)));

输出

[ test]
[-test]
[test, test]
[ test, test]
[test-]
[test, test]
[a, test]