gpt4 book ai didi

Java Regex 一组中的字符数决定了下一组中的字符数

转载 作者:行者123 更新时间:2023-11-30 12:04:19 25 4
gpt4 key购买 nike

这是给你的。是否可以根据前一组中已匹配的字符数,有条件地匹配一组中的字符数。

我需要匹配这样的东西

ABCDEFG | .ABCDEF | ..ABCDE | ...ABCD | ....ABC | .....AB

我知道这可以通过多个 OR 语句来完成,如下所示:

[A-Z0-9]{7}|\.[A-Z0-9]{6}|\.{2}[A-Z0-9]{5}        you get the idea

但这可以通过条件匹配来完成吗? (是的,我知道我只列出了字符;这是为了清楚起见,但我也需要匹配数字以及正则表达式)。也试过这个,但不太奏效。

(\.*[A-Z0-9]*){7}

最佳答案

如果你想使用单个捕获组,也许你可以使用 \G anchor 来断言上一个匹配结束时的位置:

(?:\.*([A-Z0-9]+)|\G(?!\A))(?:\h+\|\h+|$)

Regex demo | Java demo

例如,如果您只想获取捕获组的值:

String regex = "(?:\\.*([A-Z0-9]+)|\\G(?!\\A))(?:\\h+\\|\\h+|$)";
String string = "ABCDEFG | .ABCDEF | ..ABCDE | ...ABCD | ....ABC | .....AB";

Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
if (matcher.group(1) != null) {
System.out.println(matcher.group(1));
}
}

结果:

ABCDEFG
ABCDEF
ABCDE
ABCD
ABC
AB

关于Java Regex 一组中的字符数决定了下一组中的字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57204647/

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