正则法则提取文本里的时间

1、功能概述

实现通过正则法则,来提取一个文本里面包含的时间
这里写图片描述

2、实现思路

1)编写适合筛选格式的正交法则
如图实现 * 年 * 月 * 日的筛选

            //****年**月**日   ****年*月*日 的格式,我们可以更改不同筛选规则,进行不同格式筛选
            pattern = Pattern.compile("((([0-9]{4})年([0-9]{2}|[1-9]))月([0-9]{2}|[1-9]))日"); //尝试提取这样类型的数据
            matcher = pattern.matcher(content);
            System.out.println("查找 年  月  日 ");

            /**
             while (matcher.find()) {
             str_ymd =  matcher.group();  //查找到所有
             }
            */
            if (matcher.find()) {  //判断文本是否找到符合规则字符串,并提取
                System.out.println("找到了");
                str_ymd =  matcher.group(0);
                System.out.println("找到符合筛选规则的数据:" + str_ymd);
                }

2)对符合筛选规格的数据进行截取判断,是否是否和年月日的日期规则

截取年月日

                year = Integer.parseInt(str_ymd.substring(0, str_ymd.lastIndexOf("年")));  //截取年之前字符串,并转化 int
                month = Integer.parseInt(str_ymd.substring(str_ymd.indexOf("年") + 1, str_ymd.lastIndexOf("月"))); //截取 年  月 之间字符串,并转化 int
                day = Integer.parseInt(str_ymd.substring(str_ymd.indexOf("月") + 1, str_ymd.lastIndexOf("日"))); //截取 月  日 之间字符串 , 并转化 int

进行判断:

  //将筛选到的数据进行判断,是否符合日期
    private void judgeData(int year, int month,int day) {
        boolean isLeapYear = false;

            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                System.out.println(year + "年是闰年!");
                isLeapYear = true;
            } else {
                System.out.println(year + "年是平年!");
                isLeapYear = false;
            }
            if ((0<month && month <=12)) {   //判断月份
                switch (month) {
                    case 1:
                    case 3:
                    case 5:
                    case 7:
                    case 8:
                    case 10:
                    case 12:
                        if ((0<day && day <=31)){
                            showDataTime(); //显示出来
                        }
                        break;
                    case 4:
                    case 6:
                    case 9:
                    case 11:
                        if ((0<day && day <=30)){
                            showDataTime(); //显示出来
                        }
                        break;
                    case 2:
                        if (isLeapYear && (0<day && day<=29)){
                            showDataTime(str_split);
                        } else if (0<day && day<=28){
                            showDataTime(显示出来);
                        }
                        break;
                        default:
                            System.out.println("日期 时间出错");
                            break;

                }
            } else{
                System.out.println("月份  时间出错");
            }

        }

同样的道理,大家也可以,筛选 年月 , 时分秒 等不同格式和样式的时间串,具有很好的延展性。

demo 实例

文献参考:

时间日期的正则
https://blog.csdn.net/zhanghaisong_2015/article/details/78423597

猜你喜欢

转载自blog.csdn.net/qq_27061049/article/details/80986827
今日推荐