Java 用于分析负数的分隔符

Java 用于分析负数的分隔符,java,regex,Java,Regex,我想使用split解析字符串,以查找正整数和负整数。例如,dfgs&-6d5.,b-dgj895-9-8将转换为数组[-6,5895,-9,-8] 在英语中,正则表达式是: 非数字字符 非破折号后跟数字的字符 零宽度字符,后面跟一个破折号,后面跟一个数字 这些是独立的组件,但我不知道如何将它们连接在一起: \D+ [^-?=[0-9]] ?=-[0-9]+ 听起来你并不想要分裂。使用a/似乎更符合您的意图: String text = "dfgs#&-6d5.,bdgj895-9-8";

我想使用split解析字符串,以查找正整数和负整数。例如,dfgs&-6d5.,b-dgj895-9-8将转换为数组[-6,5895,-9,-8]

在英语中,正则表达式是:

非数字字符 非破折号后跟数字的字符 零宽度字符,后面跟一个破折号,后面跟一个数字 这些是独立的组件,但我不知道如何将它们连接在一起:

\D+ [^-?=[0-9]] ?=-[0-9]+
听起来你并不想要分裂。使用a/似乎更符合您的意图:

String text = "dfgs#&-6d5.,bdgj895-9-8";

Matcher m = Pattern.compile("-?\\d+").matcher(text);
while (m.find())
    System.out.println(m.group());
您可以使用列表来存储匹配项。

分割显然不是获得所需结果的合适工具。但是,要使用拆分,可以使用以下模式:

String[] nbs = text.split("(?>[^-0-9]+|-(?![0-9]))+|(?=-[0-9])");

但之后需要删除空结果,可以在开头或结尾,具体取决于字符串。

到目前为止您尝试了什么?不,我想知道如何使用split。@JoelA.Christophel我想知道如何用锤子烧水。
String[] nbs = text.split("(?>[^-0-9]+|-(?![0-9]))+|(?=-[0-9])");