gpt4 book ai didi

java - 获取在正则表达式中进行匹配的组的编号/ID

转载 作者:行者123 更新时间:2023-12-02 03:14:45 26 4
gpt4 key购买 nike

我刚刚编写了 2 个小时的代码,认为 Matcher.group() 返回了在正则表达式中进行匹配的组的编号/ID。我所做的简化示例:

//    Group   -1-   -2- 
Pattern p = Pattern.compile("(abc)|(def)");
String t = "abc abc def def abc";

for (Matcher m = p.matcher(t); m.find(); ) {
System.out.print( m.group() );
}

我认为这会输出1, 1, 2, 2, 1,即每场比赛的组数。相反,它实际上返回组匹配的部分。有没有其他的方法或者途径可以达到我想要的结果?

最佳答案

您可以检查结果以查看匹配的结果:

for (Matcher m = p.matcher(t); m.find(); ) {
if (m.group(1) != null) {
System.out.print("1, ");
} else {
System.out.print("2, ");
}
}

编辑:如果您有很多组并且不想对它们进行硬编码,您可以改为循环它们(假设它们仍然是独占的):

for (Matcher m = p.matcher(t); m.find(); ) {
for (int i = 1; i <= m.groupCount(); i++) {
if (m.group(i) != null) {
System.out.print(i + ", ");
break;
}
}
}

关于java - 获取在正则表达式中进行匹配的组的编号/ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40478393/

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