java,正则搜索问题,谢谢

s t r="您于2013年5月18日登陆系统,请留意是否本人操作。"

在不知道具体日期的情况下,用正则怎么搜索到str里的日期呢?谢谢

下面这个demo可以直接提取出“2013年11月31日”
正则表达式:\d{4}年([1-9]|[1][0-2])月(\d{1}|[12]\d{1}|[3][01])日

         String a = "您于2013年11月31日登陆系统,请留意是否本人操作。";
        Pattern p = Pattern.compile("\\d{4}年([1-9]|[1][0-2])月(\\d{1}|[12]\\d{1}|[3][01])日");
        Matcher matcher = p.matcher(a);
        if(matcher.find()){
            System.out.println(matcher.group(0));//输出2013年11月31日
        }

正则表达式有篇博客:http://blog.csdn.net/small_mouse0/article/details/54144351
有问题,,还可以追问,,

\d{4}年\d{1,2}月\d{1,2}日

/.*\d{4}年\d{1,2}月\d{1,2}日.*/应该还能改善,手机打不方便弄。楼主可以百度下各个字符含义或可能老司机给个更好的!!

试试这个:
http://tool.oschina.net/regex#

 ([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))