Java正则表达式:匹配多个实例

Java正则表达式:匹配多个实例,java,regex,Java,Regex,我有一个电话号码和其他文本列表,如: +1-703-535-1039 +1-703-728-8382 +1-703-638-1039 +1-703-535-1039 我试着只匹配区号和号码的前3位 目前我正在使用以下正则表达式: \d{3}-\d{3} 但它只返回第一个匹配项,而不是所有匹配项 请参考此链接: 在regex101中,使用globalg标志获取所有匹配项 要获取Java中的所有匹配项,请执行以下操作: Pattern pattern = Pattern.compile

我有一个电话号码和其他文本列表,如:

+1-703-535-1039  +1-703-728-8382 +1-703-638-1039  +1-703-535-1039 
我试着只匹配区号和号码的前3位

目前我正在使用以下正则表达式:

\d{3}-\d{3}
但它只返回第一个匹配项,而不是所有匹配项

请参考此链接:


在regex101中,使用global
g
标志获取所有匹配项

要获取Java中的所有匹配项,请执行以下操作:

Pattern pattern = Pattern.compile("(\d{3}-\d{3})");
Matcher matcher = pattern.matcher("+1-703-535-1039  +1-703-728-8382 +1-703-638-1039  +1-703-535-1039");

// Find all matches
while (matcher.find()) {
    // Get the matching string
    String match = matcher.group();
}

您真的用Java尝试过这个吗?在regex101中,如果您希望所有匹配项都使用
g
修饰符。我投票将此问题作为离题题结束,因为这是一个问题Downvoter,原因?为什么会被否决?它起作用了!原始答案针对的是问题,而不是经过编辑的答案。然而,我意识到我需要区号和前3位数字,中间没有破折号(-)。我试过:
\d{3}(?=-)\d{3}
(积极向前看),但我没有找到任何匹配项。@KayMart,
(?=-)\d{3}
在第一个数字也是破折号的情况下匹配三个数字,这永远不会发生。Lookaheads匹配而不消耗输出,但您似乎希望匹配的输出不包含破折号。第二步是从输出中去掉破折号,java正则表达式中没有“全局”标志。