我试图提取以下字符串中的数字:
09/29/2014
我目前正在使用代码:
Pattern p = Pattern.compile("([0-9]{2})/([0-9]{2})/([0-9]{4})");
Matcher m = p.matcher(startDatepicker);
String startYear = m.group(3);
String startMonth = m.group(1);
String startDay = m.group(2);
startDatepicker
包含:09/29/2014
但是,我没有收到任何比赛..我也尝试用\\
转发正斜杠,但这也没有用。
我错过了什么吗?
感谢您的帮助。
答案 0 :(得分:0)
您需要致电find()
来迭代您的匹配组。
Pattern p = Pattern.compile("([0-9]{2})/([0-9]{2})/([0-9]{4})");
Matcher m = p.matcher(startDatepicker);
while (m.find()) {
...
}
find()
方法在传递给p.matcher()
的输入中搜索正则表达式的出现次数。如果可以找到多个匹配项,则此方法将找到第一个匹配项,然后移至下一个匹配项以进行每个后续调用。
答案 1 :(得分:0)
在您访问匹配的群组之前,您需要在匹配器上调用find()
,并检查它是否找到了匹配项:
Pattern p = Pattern.compile("([0-9]{2})/([0-9]{2})/([0-9]{4})");
Matcher m = p.matcher(startDatepicker);
if (!m.find()) {
return;
}
String startYear = m.group(3);
String startMonth = m.group(1);
String startDay = m.group(2);
m.find()
的召唤将匹配器置于第一场比赛中。