Java 不以字符串开头匹配正则表达式?

Java 不以字符串开头匹配正则表达式?,java,regex,Java,Regex,我有两个人的一串分数。我从数据库中提取的这些分数在分数之间划了一个破折号。。。因此,通常情况下,分数看起来像: 2-3 我试图在Java中将这两个分数拆分成一个字符串[] match.get("scores").toString().split("-", 1) 问题是,如果分数为负值,会发生什么情况: -2--3 我现在需要做的是用它发现的不是字符串中第一个字符的第一个破折号来分割 如何更改我的.split(RegEx,1),以便将破折号作为第一个字符进行匹配?您可以使用以下方法进行拆分:

我有两个人的一串分数。我从数据库中提取的这些分数在分数之间划了一个破折号。。。因此,通常情况下,分数看起来像:

2-3
我试图在Java中将这两个分数拆分成一个
字符串[]

match.get("scores").toString().split("-", 1)
问题是,如果分数为负值,会发生什么情况:

-2--3
我现在需要做的是用它发现的不是字符串中第一个字符的第一个破折号来分割


如何更改我的
.split(RegEx,1)
,以便将破折号作为第一个字符进行匹配?

您可以使用以下方法进行拆分:

.split("(?<=\\d)-");

.split((?不是答案,但这是对正确数据库设计的典型违反。分数应该在两个单独的列中。如果你可以选择修复模式,那么就这样做。我同意……但这不是我的数据库。这是一个挑战。只是为了添加一些解释,这个正则表达式的意思是:“仅当前面有数字时,才在
-
上拆分。”(不要把那个数字当作分隔符)”。这部分正则表达式
(?