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

时间:2018-09-19 06:20:35

标签: java

我正在尝试在'-'上分割下面的字符串,但是问题是,只有在两边都有字符时,才应该在'-'上分割。

String s = "1 - 2 Foo - Bar 3 - 4 Wrong - Right"

输入法

String[0] = 1 - 2 Foo
String[1] = Bar 3 - 4 Wrong
String[2] = Right

有什么方法可以实现这一目标。

1 个答案:

答案 0 :(得分:8)

您可以使用此正则表达式:

(?<=[a-zA-Z]) - (?=[a-zA-Z])

像这样:

s.split("(?<=[a-zA-Z]) - (?=[a-zA-Z])")

说明:

(?<=...)是一个积极的回顾,它检查连字符前面的内容是否匹配[a-zA-Z],但实际上不匹配它们。 (?=...)很相似,但是看起来 要看连字符右侧的内容是否与[a-zA-Z]相匹配。