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

dec*_*iic 1 java regex split

我想分割一个字符串,只要它包含字符" - "或它是否包含空格,但只有在" - "或空格之前和之后存在一个字符.

例:

" test" -> Dont split
"-test" -> Dont split
"test test" -> split
" test test" -> split       
"test-" -> dont split
"test-test" -> split
"a-test" -> split
Run Code Online (Sandbox Code Playgroud)

Imp*_*Fox 6

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

(?<=\w)[ -]+(?=\w)
Run Code Online (Sandbox Code Playgroud)

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)));
Run Code Online (Sandbox Code Playgroud)

产量

[ test]
[-test]
[test, test]
[ test, test]
[test-]
[test, test]
[a, test]
Run Code Online (Sandbox Code Playgroud)