2014-11-21 30 views
0

考虑下面的正则表达式和字符串正则表达式 - 如何Matcher.Group工作

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在123456789?

感谢

+0

使用find函数进行检查。 – 2014-11-21 11:12:26

回答

1
Your fax has been successfully sent to (.*?)\. 

尝试this.Capture的groups.See demo.You没有使用如发现他人,你也没有给捕获组的方式来stop.You需要提供.它停止在.陈述和捕获休息。

http://regex101.com/r/uV3aL0/34

+0

ahhh是 - 我用的是find(没有粘贴在我的坏道上面),但是关键是\。我错过了 - 谢谢 – Biscuit128 2014-11-21 11:17:32

+0

@ Biscuit128欢迎:) – vks 2014-11-21 11:17:58

1

为什么会1组不是[...]

因为你创建匹配,但不实际运行它。

你需要.find()(和检查返回值),你可以实际检索组之前:

final Matcher matcher = yourPattern.matcher(val); 
if (matcher.find()) 
    // use matcher.group(1) 

其他替代方案:.matches().findFirst()