用于解析负数的分隔符

时间:2014-07-28 01:37:50

标签: java regex

我想使用split解析一个字符串来查找整数(正数和负数)。例如,dfgs#&-6d5.,b-dgj895-9-8会变成数组[-6, 5, 895, -9, -8]

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

  1. 不是数字的字符
  2. 不是破折号的字符后跟数字
  3. 零宽字符后面跟一个数字
  4. 的短划线

    这些是单独的组件,但我不知道如何将它们连接在一起:

    1. \D+
    2. [^-(?=[0-9])]
    3. (?=-[0-9]+)

2 个答案:

答案 0 :(得分:2)

听起来split听起来并不像你想要的那样。使用Pattern / Matcher似乎更符合您的目标:

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

Matcher m = Pattern.compile("-?\\d+").matcher(text);
while (m.find())
    System.out.println(m.group());
-6
5
895
-9
-8

您可以使用List<String>存储匹配项。

答案 1 :(得分:2)

split显然不是获得所需结果的合适工具。但是,要使用split,您可以使用此模式:

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

但你需要删除空结果(可以在开头或结尾,取决于字符串)。