我想说我想从可能包含一两个字符串的字符串中提取foo\d{2}
和bar\d{2}
作为命名组(例如,foo
和bar
)它们的任何顺序,例如:
hello foo33 world bar12
bar66 something foo14
this one only has bar45
this one has neither
有没有办法在Java中使用单个正则表达式?
最好将解决方案推广到3个以上的命名组。
答案 0 :(得分:1)
您可以使用(foo|bar)\\d{2}
和for
方法获取所有必需的值
find
匹配(foo|bar)\\d{2}
foo
:或|bar
bar
:正好匹配2位
代码
\\d{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());
}
答案 1 :(得分:1)
这可以使用正则表达式或运算符来完成:|
在这种情况下,您要查找foo
或 bar
。所以你需要做的就是用或operator 对它们进行分组。
(foo|bar)\\d{2}