Java 正则表达式 : Pattern and Matcher

标签 java regex

尽管在线资源计算出正则表达式与扫描仪“scnr”中的字符串匹配,但以下代码块会产生“未找到匹配项”错误。如果任何人都可以通过最少的更改提供简短的代码修复,那就太好了。

String p = "([0-9]*),([0-9]*),(r|b)";

System.out.println("regex: " + p);
Pattern pattern = Pattern.compile(p);
Matcher matcher;

String testString = scnr.next();
System.out.println("test string: " + testString);
matcher = pattern.matcher(testString);

matcher.matches();

System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println(matcher.group(3));



Output:

regex: ([0-9]*),([0-9]*),(r|b)
test string: (1,65,b)
Exception in thread "main" java.lang.IllegalStateException: No match found

最佳答案

您试图将字符串与整个模式进行匹配,但由于您有多个组,所以它不起作用。

Pattern pattern = Pattern.compile("([0-9]*),([0-9]*),([rb])");
    String testString = scnr.next();
    System.out.println("test string: " + testString);
    Matcher matcher  = pattern.matcher(testString);

    while (matcher.find()) {
        System.out.println(matcher.group(1));
        System.out.println(matcher.group(2));
        System.out.println(matcher.group(3));
    }

关于Java 正则表达式 : Pattern and Matcher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61376251/

相关文章:

c# - 在字符串中查找匹配的 guid

java - 如何使用正则表达式提取字符串的电话号码?

regex - 提取两点之间的字符串

ios - 如何拆分这个字符串并在ios正则表达式中分别获取数字

java - 为什么使用句点分隔单词是 Ant 构建文件中目标名称的惯例?

java - 从java到c#的转换——协变和逆变

java - PreparedStatement 池与连接池

java - JLabel 没有移动

java - 使用 JavaFX 和 FXML 验证用户输入

python - 如何在没有 DOTALL 的情况下匹配任何东西 (DOTALL)?