给出以下正则表达式和字符串
String regex = "Your fax has been successfully sent to (.*?)";
String val = "Your fax has been successfully sent to 123456789 at 123456789."
现在我可以看到这个匹配,但是如果我调用Pattern.matcher(val).group(1)
然后我得到一个超出绑定异常的索引
为什么第1组不是
123456789 at 123456789?
由于
答案 0 :(得分:1)
为什么第1组不是[...]
因为您创建了匹配器但实际上并未运行它。
在实际检索组之前,您需要.find()
(并检查返回值):
final Matcher matcher = yourPattern.matcher(val);
if (matcher.find())
// use matcher.group(1)
其他替代方案:.matches()
,.findFirst()
。
答案 1 :(得分:1)
Your fax has been successfully sent to (.*?)\.
试试这个。抓住小组。看看demo。你没有按照别人的说法使用find你也没有给捕获组一个停止的方法。你需要提供.
让它停在{{ 1}}并捕获休息。