0

我正在尝试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€');

我不是正则表达式的专家,但我很确定我的完全没有错!

建议?

4

2 回答 2

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");
}
于 2013-02-18T20:49:38.023 回答
0

您在group(1)没有先调用匹配操作(例如find())的情况下调用。-这是IllegalStateException.

如果您必须使用该分组案例进行替换,那么如果您只使用$1则不需要这样做,因为这replaceAll()是匹配操作。

于 2013-02-18T20:58:59.957 回答