Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 匹配器找不到匹配项_Java_Regex_Matcher - Fatal编程技术网

Java 匹配器找不到匹配项

Java 匹配器找不到匹配项,java,regex,matcher,Java,Regex,Matcher,我试图提取以下字符串中的数字: 2014年9月29日 我目前正在使用代码: 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); startDatepic

我试图提取以下字符串中的数字:

2014年9月29日

我目前正在使用代码:

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

但是,我没有收到任何匹配项。。我还试着用
\\
避开前斜杠,但也没用

我错过什么了吗


谢谢您的帮助。

您需要调用
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()
的输入中搜索正则表达式的出现。如果可以找到多个匹配项,此方法将查找第一个匹配项,然后在每次后续调用中移动到下一个匹配项。

在访问匹配的组之前,您需要在匹配器上调用
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()