gpt4 book ai didi

java - 如何在 Java 中使用正则表达式提取顺序未知的命名组?

转载 作者:行者123 更新时间:2023-11-29 04:32:51 26 4
gpt4 key购买 nike

假设我想提取 foo\d{2}bar\d{2} 作为命名组(例如,foobar) 来自可能以任何顺序包含其中一个或两个的字符串,例如:

hello foo33 world bar12
bar66 something foo14
this one only has bar45
this one has neither

有没有办法用 Java 中的单个正则表达式来完成它?

如果解决方案可以推广到 3 个以上的命名组,那将是最好的。

最佳答案

你可以使用(foo|bar)\\d{2}使用 find 方法获取所有需要的值

(foo|bar)\\d{2} 要么匹配 foo

  • |bar : 或 bar

  • \\d{2} : 精确匹配 2 位数字

代码

    String s="hello foo33 world bar12\n"+
"bar66 something foo14\n"+
"this one only has bar45\n"+
"this one has neither";
Pattern pattern = Pattern.compile("(foo|bar)\\d{2}");
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
System.out.println(matcher.group());
}

输出:

foo33
bar12
bar66
foo14
bar45

关于java - 如何在 Java 中使用正则表达式提取顺序未知的命名组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43095272/

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