gpt4 book ai didi

java正则表达式匹配以特定字符串开头的每个组

转载 作者:搜寻专家 更新时间:2023-10-31 19:40:13 24 4
gpt4 key购买 nike

我有一个像 a1wwa1xxa1yya1zz 这样的字符串。

我想让每个组都以 a1 开头,直到下一个 a1 被排除。(在我的示例中,我将是:a1wwa1xxa1yya1zz

如果我使用:

Matcher m = Pattern.compile("(a1.*?)a1").matcher("a1wwa1xxa1yya1zz");
while(m.find()) {
String myGroup = m.group(1);
}

myGroup 每两组抓取一组。
所以在我的示例中,我只能捕获 a1wwa1yy

谁有好主意?

最佳答案

拆分是一个很好的解决方案,但如果您想留在正则表达式世界中,这里有一个解决方案:

Matcher m = Pattern.compile("(a1.*?)(?=a1|$)").matcher("a1wwa1xxa1yya1zz");
while (m.find()) {
String myGroup = m.group(1);
System.out.println("> " + myGroup);
}

我使用了一个积极的前瞻来确保捕获之后是 a1,或者是行尾。

Lookahead 是零宽度断言,即。他们在不推进匹配游标的情况下验证条件,因此他们验证的字符串仍然可用于进一步测试。

关于java正则表达式匹配以特定字符串开头的每个组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13841209/

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