gpt4 book ai didi

java - 是否可以在非捕获组上使用量词? - 正则表达式

转载 作者:行者123 更新时间:2023-12-01 10:11:09 24 4
gpt4 key购买 nike

我通过正则表达式捕获了一个组,并且我想捕获一切,但不是团体。因此组可以在字符串中的不同位置出现多次。

我的第一个想法是,用负向预测来解决它,但我失败了。因此,我尝试使用非捕获组,但我也卡在这里。

(bar) (baz) foo

我想要foo。

这是我到目前为止所拥有的:

String input = "(bar) (baz) foo";


String matchesGroup = "((?=\\().*?\\))"; //matches (...)

// as Casimir et Hippolyte commented, I know use
// ((?:(...))+) for the non capturing group

String matchesFoo = "((?:"+ matchesGroup +")+)\\s(.*)";

Pattern pattern = Pattern.compile(matchesFoo);
Matcher matcher = pattern.matcher(input);

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

但是根本没有捕获到任何东西

actual :

expected : foo

我的正则表达式错在哪里?

最佳答案

由于您想要匹配多个 (...) 组,请考虑可能的尾随空格并移动 + 来量化其中的一个或多个(我将空格移动到组中,并且+ 量化整个结构)

String matchesFoo = "(?:(?:(?=\\().*?\\))\\s?)+(.*)";

demo here

关于java - 是否可以在非捕获组上使用量词? - 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36104904/

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