java - 正则表达式在在线测试器中匹配,但在 JAVA 中不匹配

标签 java regex pattern-matching

我正在尝试从此字符串中提取文本 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€');

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

建议?

最佳答案

您需要在group(...)之前调用find():

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");
}

关于java - 正则表达式在在线测试器中匹配,但在 JAVA 中不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14944243/

相关文章:

python - 删除单词开头的标点符号(特殊符号除外)

Java 正则表达式转义撇号

pattern-matching - 对 SML 中的两个分数求和

Prolog:如何捕获术语或模式匹配的整个结果

带有响应代码的 Java TCP 简单 Web 服务器问题(作业)

Java - 由计时器控制的多个对象(用于游戏)

java - struts2和jsp上的小程序

java - 使用 Spring SAML 从 https 加载元数据

java - 使用模式和匹配器从字符串中解码多项式

regex - 如何用交替进行grep