在字符之间遇到' - '而不是在数字上遇到字符串的拆分

0 java

我试图在' - '上拆分下面的字符串,但问题是,当它的两边都有字符时,拆分应该只发生' - '.

String s = "1 - 2 Foo - Bar 3 - 4 Wrong - Right"
Run Code Online (Sandbox Code Playgroud)

Ouptut

String[0] = 1 - 2 Foo
String[1] = Bar 3 - 4 Wrong
String[2] = Right
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这一目标.

Swe*_*per 8

你可以使用这个正则表达式:

(?<=[a-zA-Z]) - (?=[a-zA-Z])
Run Code Online (Sandbox Code Playgroud)

像这样:

s.split("(?<=[a-zA-Z]) - (?=[a-zA-Z])")
Run Code Online (Sandbox Code Playgroud)

说明:

(?<=...)是一个积极的lookbehind,它检查连字符之前的东西是否匹配[a-zA-Z],但实际上并不匹配它们.这(?=...)是类似的,但它会向前看,看看连字符右边的内容是否匹配[a-zA-Z].