繁体   English   中英

正则表达式捕获组无法捕获多个组

[英]regex capturing groups fails to capture multiple groups

我要捕获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));
}

像这样:

[A-Z]\d+

期望零件为AZ,后跟数字。

无需方括号即可使用。

尝试这样:

((G|I|R|F)[0-9]{1,4}-?){1,}

尝试这个

([G|I|R|F])([0-9]{1,4})/g

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM