Java 仅打印匹配器中的第一个匹配项

Java 仅打印匹配器中的第一个匹配项,java,regex,Java,Regex,我使用以下代码在一个文档中提取用户的年龄,但他的年龄出现了几次: Pattern r = Pattern.compile("(\\d{2})(?=-year-old)"); Matcher matcher = r.matcher("He is a 55-year-old doctor. xxxxx. As a 55-year-old man he xxxx. When he is 55-year-old , xxxx"); if(matcher.find()) {

我使用以下代码在一个文档中提取用户的年龄,但他的年龄出现了几次:

Pattern r = Pattern.compile("(\\d{2})(?=-year-old)");
Matcher matcher = r.matcher("He is a 55-year-old doctor. xxxxx. As a 55-year-old man he xxxx. When he is 55-year-old , xxxx");
if(matcher.find()) {    
                System.out.println(matcher.group(0));
                }
最后我得到的结果是:

55
55
55
我怎样才能只打印一次
55


提前感谢。

您可以通过添加

Pattern r = Pattern.compile("(\\d{2})(?=-year-old)?");

就细节而言,您的代码应该可以正常工作,只打印一次。“这不是你想要的吗?”AbsiHek,他只想要第一个例子。让我们看看你使用的整个循环。我应该提到文本中的“XXX”也包含其他的数字。@ Baselev实际上,你可以考虑没有循环。<代码>(\d{ 2 })(<=岁)?意味着在前视中没有用,你建议<代码> \d { 2 } < /代码>。但是,操作代码无论如何都可以工作。