如何从java String中的连字符之前获取所有整数

时间:2015-02-05 11:28:59

标签: java regex

我想通过连字符解析,答案应该是0 0 1(整数),这可能是在java中解析的最佳方法

public static String  str ="[0-S1|0-S2|1-S3, 1-S1|0-S2|0-S3, 0-S1|1-S2|0-S3]";

请帮帮我。

2 个答案:

答案 0 :(得分:4)

将以下正则表达式与Pattern和matcher类一起使用。

Pattern.compile("\\d+(?=-)");

\\d+ - 匹配一个或多个数字。 +重复上一个令牌\\d与数字字符匹配)一次或多次。

(?=-) - 只有在后跟连字符的情况下。 (?=-)称为正向前瞻断言,断言匹配必须后跟-符号。

String str ="[0-S1|0-S2|1-S3, 1-S1|0-S2|0-S3, 0-S1|1-S2|0-S3]";
Matcher m = Pattern.compile("\\d+(?=-)").matcher(str);
while(m.find())
{
    System.out.println(m.group());
}

答案 1 :(得分:0)

一种懒惰的方式:如果您已经知道字符串的模式,请使用substring和indexof来定位您的单词。

String str ="[0-S1|0-S2|1-S3, 1-S1|0-S2|0-S3, 0-S1|1-S2|0-S3]";
integer int1 = Integer.parseInt(str.substring(str.indexOf("["),str.indexOf("-S1")));

等等。