【发布时间】:2015-04-13 17:58:21
【问题描述】:
我在使用正则表达式匹配字符串中的日期时遇到了问题。实际上我有很多“日期格式”要匹配,但第一个不起作用,我不明白为什么它不起作用......
格式类似于“2013 年 9 月 12 日”或“2014 年 5 月 6 日”或“2014 年 6 月 2 日”...
在我的字符串 text 中,有以下日期:“2014 年 7 月 4 日”。
这是我的代码:
Pattern p = Pattern.compile("[a-zA-Z]+ [0-3]?[0-9], (1|2)\\d{3}", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(text);
System.out.println(m.group(1));
但是就出现了这个错误:
Exception in thread "main" java.lang.IllegalStateException: No match found
我什至尝试过使用较小的正则表达式,但它仍然不匹配任何内容。
提前感谢您的帮助!
【问题讨论】:
-
你没有调用
find或matches方法 -
你需要使用查找功能。
-
不要使用正则表达式来检查日期:有太多的边缘情况(例如闰年和 1752 年 9 月)。相反,尝试解析并处理任何异常。
-
我怀疑您误解了
group(x)的含义。你能解释一下你对m.group(1)的期望结果吗? -
@anubhava @Avunash Raj 谢谢,它帮助我理解了问题^^ @Bathsheba 你能详细解释一下吗? ^^ @Pshemo 我现在明白了,它打印了我用
()圈起来的第一场比赛^^