有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java正则表达式可选地捕获2个组

我有一根包含例如1a2b的绳子。数字是1到9,字母(a | b)是常数。我想要一个正则表达式,可以查找'1a'和'2b',其中任一组都是可选的

我有这个

    String description = "bla bla bla: 1a2b more bla bla bla";
    Pattern pattern = Pattern.compile("([1-9]a)([1-9]b)");
    Matcher matcher = pattern.matcher(description);
    if (matcher.find()) {
        System.out.println(" group1: " + matcher.group(1));
        System.out.println(" group2: " + matcher.group(2));
    } else {
        System.out.println("no match");
    }

哪个输出

group1: 1a
group2: 2b

如果我在任一组后面添加?,它仍然有效。如果我在两个组之后添加?,它仍然匹配,但两个组都返回null

如何使这两个组都是可选的,以便匹配

案例1:“bla 1a bla”

案例2:“bla 2b bla”

案例3:“bla 1a2b bla” ?


共 (0) 个答案