如何使用正则表达式从String中提取数字

时间:2014-06-18 15:18:34

标签: java regex

我想从字符串12345 Rial中提取s

String regx= ".* (\\d*) Rial";
String  s = "your balance is 12345 Rial your last"
Pattern pattern = Pattern.compile(regx);
Matcher matcher = pattern.matcher(s);
System.out.println(matcher.group(1));

但是抛出以下异常

java.lang.IllegalStateException: No match found
 at java.util.regex.Matcher.group(Unknown Source)
 at ir.dena.avl.server.util.modbus.ChargeMessage.getBalanceFromIranCell(ChargeMessage.java:95)

有人能指出原因吗?

1 个答案:

答案 0 :(得分:1)

首先需要找到模式,然后才能使用它。您需要使用Matcher类中的findmatches个第一个方法来遍历字符串并获得匹配。

所以使用

...
if (matcher.find())
    System.out.println(matcher.group(1));

或者如果你想确保整个字符串与正则表达式匹配

...
if (matcher.matches())
    System.out.println(matcher.group(1));