gpt4 book ai didi

java - 遍历正则表达式查找

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:03 25 4
gpt4 key购买 nike

Input-> Input!RC + Calc!R[1]C[1]

在输出中我想对这些进行操作:

RC and R[1]C[1]

我的尝试:

private static void findMatch(String formula) {         Matcher m = Pattern.compile("\\W(R(\\[(.+?)\\])?C(\\[(.+?)\\]))")         .matcher(formula);        // Matcher m = Pattern.compile(        // "\\W(R(\\[(.+?)\\])?C) | \\W(R(\\[(.+?)\\])?C(\\[(.+?)\\]))")        //  .matcher(formula);        for (; m.find(); m.reset(formula)) {            System.out.println(m.group(3));        }    }

它也不会寻找第二个模式,因为它会进入无限循环。

这有什么问题吗?

最佳答案

尝试以下操作:

String formula = "Input!RC + Calc!R[1]C[1]";
Matcher m = Pattern.compile("\\W(R(\\[(.+?)\\])?C(\\[(.+?)\\])?)").matcher(formula);
while (m.find()) {
System.out.println(m.group(1));
}

输出:

RC
R[1]C[1]

这里的主要变化是循环的工作方式,我上面的是迭代模式匹配的典型方法。我还打印 m.group(1) 而不是 m.group(3) 因为它是第一个包含整个匹配项的组,除了 !,我认为这就是您想要的。

此处对正则表达式的唯一更改是在第二个 (\\[(.+?)\\]) 组之后添加 ? 以使其成为可选的。

关于java - 遍历正则表达式查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14865826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com