我想从字符串s
中提取12345 Rial
:
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)
谁能指出原因吗?
最佳答案
首先需要找到模式,然后才能使用它。您需要首先使用 Matcher 类中的 find
或 matches
方法来遍历字符串并获取匹配项。
所以使用
...
if (matcher.find())
System.out.println(matcher.group(1));
或者如果您想确保整个字符串与正则表达式匹配
...
if (matcher.matches())
System.out.println(matcher.group(1));
关于java - 如何使用正则表达式从字符串中提取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289304/