我正在尝试从此字符串BetClic
popup_siteinfo(this, '/click/betclic', '373', 'BetClic', '60€');
我编写了一个适用于Regex Tester的简单正则表达式,但这对Java不起作用。
这是正则表达式
'\d+', '(.*?)'
这是Java输出
Exception in thread "main" java.lang.IllegalStateException: No match found
at java.util.regex.Matcher.group(Matcher.java:485)
at javaapplication1.JavaApplication1.main(JavaApplication1.java:74)
Java Result: 1
这是我的代码
Pattern pattern = Pattern.compile("'\\d+', '(.*?)'");
Matcher matcher = pattern.matcher(onMouseOver);
System.out.print(matcher.group(1));
onMouseOver
字符串为popup_siteinfo(this, '/click/betclic', '373', 'BetClic', '60€');
我不是正则表达式的专家,但我很确定我的一点都不错!
建议?
答案 0 :(得分:3)
您需要在 find()
之前致电group(...)
:
Pattern pattern = Pattern.compile("'\\d+', '(.*?)'");
Matcher matcher = pattern.matcher(onMouseOver);
if(matcher.find()) {
System.out.print(matcher.group(1));
}
else {
System.out.print("no match");
}
答案 1 :(得分:0)
您在没有先调用匹配操作(例如group(1)
)的情况下调用find()
。这是IllegalStateException
的原因。
如果您必须使用该分组案例进行替换,那么如果您只使用 $ 1 则不需要这样做,因为replaceAll()
是匹配操作。