简单的Java正则表达式匹配器不起作用
代码:
import java.util.regex.*;public class eq {
public static void main(String []args) {
String str1 = "some=String&Here&modelId=324";
Pattern rex = Pattern.compile(".*modelId=([0-9]+).*");
Matcher m = rex.matcher(str1);
System.out.println("id = " + m.group(1));
}
}
错误:
Exception in thread "main" java.lang.IllegalStateException: No match found
我在这里做错了什么?
回答:
你需要调用find()
的Matcher
,然后才能调用group()
和相关的功能,大约匹配的文本查询或操纵它(start()
,end()
,appendReplacement(StringBuffer
sb, String replacement)等)。
因此,在您的情况下:
if (m.find()) { System.out.println("id = " + m.group(1));
}
这将找到第 一个 匹配项(如果有),并提取由正则表达式匹配的第一个捕获组。如果要在输入字符串中查找所有匹配项,请更改if
为while
循环。
以上是 简单的Java正则表达式匹配器不起作用 的全部内容, 来源链接: utcz.com/qa/411501.html