java - 匹配器未找到匹配项

标签 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);

startDatepicker 包含:09/29/2014

但是,我没有收到任何匹配项。我还尝试使用 \\ 转义正斜杠,但这也不起作用。

我错过了什么吗?

感谢您的帮助。

最佳答案

在访问匹配的组之前,您需要在匹配器上调用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() 将匹配器定位到第一个匹配项。

Demo.

关于java - 匹配器未找到匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25735613/

相关文章:

regex - 如何为 Github 设置此预提交消息 Hook ?

java - 为什么这段试图使用 Hamcrest 的 hasItems 的代码不能编译?

c++ - Clang AST Matcher和AST Visitor之间有什么区别?

lisp - 匹配器关联列表 lisp

java - 无法通过 jdbc 连接到配置单元

java - JPanel&JScrollPane及错误渲染

java - 在 Hibernate 中无法删除没有子级的父级

java - 如何处理使用Scanner输入的多行

r - 使用 grep 快速检测包含任何值的列

regex - 在保留换行符的同时修剪字符串