我有以下要捕获的模式
G01或G01-I006或G01-I006-I1或G01-I006-I1-R06或G01-I006-I1-R06-F001
如果输入是G01-I006-I1-R06-F001,我希望有一个捕获组
捕获G 01,I 006,I 1,R 06和F 001
我想出了这种模式:
(([G|I|R|F])[0-9]{1,4}-?){1,}
但是对于G01-I006-I1-R06-F001,捕获组仅包含F001
最佳答案
尝试在所有匹配项之间循环:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
String input = "G01 G01-I006 G01-I006-I1 G01-I006-I1-R06 G01-I006-I1-R06-F001";
final Pattern pattern = Pattern.compile("([GIRF])([0-9]{1,4})-?");
Matcher m = pattern.matcher(input);
while(m.find()) {
System.out.println(m.group(1) + " " + m.group(2));
}