gpt4 book ai didi

java - 在 Java 正则表达式中捕获组

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

我写了这个正则表达式:

String REGEX = "^\\s+something\\s+(not\\s+)?else\\s+((\\d+|\\d+-\\d+),\\s+)*(\\d+|\\d+-\\d+)$";

这是我的主要方法:

  public static void main(String... args) {
Matcher matcher = PATTERN.matcher(" something else 1, 3, 4, 5-7");
if (matcher.matches()) {
for (int index = 0; index <= matcher.groupCount(); index++) {
System.out.println(index + ": " + matcher.group(index));
}
}
}

这是我的输出:

0:  match cos 1, 3, 4, 5-7
1: null
2: 4,
3: 4
4: 5-7

13 似乎没有被捕获。 (输出 45-7 很好。)我如何修复我的正则表达式,以便我可以捕获它们(并在末尾不使用逗号捕获它们)?

最佳答案

如果您的目标是找到由其他内容非其他内容预测的数字,那么可以将它们分组为一组,然后用拆分,例如\\s+

String REGEX = "^\\s+something\\s+(not\\s+)?else\\s+((((\\d+|\\d+-\\d+),\\s+)*)(\\d+|\\d+-\\d+))$";
Pattern PATTERN = Pattern.compile(REGEX);
Matcher matcher = PATTERN.matcher(" something else 1, 3, 4, 5-7");
if (matcher.matches()) {
System.out
.println(Arrays.toString(matcher.group(2).split(",\\s+")));
}

输出:

[1, 3, 4, 5-7]

关于java - 在 Java 正则表达式中捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11552387/

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