根据事件获取子串,正则表达式java

时间:2014-08-07 09:55:31

标签: java regex string

大家好!我想知道是否有人可以帮助我。

我有一个字符串-2.100 CM 1.000 CM 1.025 CM

问题是获取CM之前的值,例如-2.11.01.025

Pattern pattern = Pattern.compile("(\\-*\\d*.\\d*) CM"); would give me -2.1, 

Pattern pattern = Pattern.compile(" (\\-*\\d*.\\d*) CM"); 1.0

无法获得第三个值(有没有办法根据它们的出现获取值?

2 个答案:

答案 0 :(得分:2)

您可以拆分字符串。

String str = "-2.100 CM 1.000 CM 1.025 CM";

String[] array = str.split("\\s+CM\\s*");
for (String s : array) {
    System.out.println(new Double(s));
}

输出:

-2.1
1.0
1.025

您也可以使用 Positive Lookahead 来尝试使用Pattern。

String str = "-2.100 CM 1.000 CM 1.025 CM";

Pattern p = Pattern.compile("[+-]?\\d+\\.?\\d*(?= CM)", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(str);
while (m.find()) {
    System.out.println(new Double(m.group()));
}

输出:

-2.1
1.0
1.025

答案 1 :(得分:0)

试试这个,

String input = "-2.100 CM 1.000 CM 1.025 CM";
String[] result = input.split("\\s*CM\\s*");