美文网首页
java中正则表达式操作集合

java中正则表达式操作集合

作者: 楼兰King | 来源:发表于2020-09-09 14:08 被阅读0次
时间操作,目前此表达式支持2018-08-20 09:09:09样式,具体可参看代码
 public static void main(String args []) {
        String str = "2017_03_2009:09:09";
        /**
         * 匹配任何非空白字符:\S 或  [^\s],^用于"[]"外表示从开头匹配,用于"[]"内表示"非",即不包括
         *
         * 匹配任何空白字符:\s 或 [^\S],等价于[ \f\n\r\t\v],这里小写s是匹配所有非空白,大写刚好相反
         *
         * \f -> 匹配一个换页
         * \n -> 匹配一个换行符
         * \r -> 匹配一个回车符
         * \t -> 匹配一个制表符
         * \v -> 匹配一个垂直制表符*/
        String pattern = "\\d{4}(\\-|\\/|.|_)\\d{1,2}\\1\\d{1,2}([^\\S]|[^\\s])\\d{1,2}(\\-|\\/|.|_|:)\\d{1,2}(\\-|\\/|.|_|:)\\d{1,2}";

        Pattern r = Pattern.compile(pattern);
        Matcher m = r.matcher(str);
        System.out.println(m.matches());
 /**验证是否为日期格式*/
    public static Date judgeTime(String time){
        String[] parsePatterns = {"yyyy-MM-dd","yyyy年MM月dd日",
                "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy/MM/dd",
                "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyyMMdd","yyyy-MM-dd HH:mm:ss.SSSSSSS",
                "YYYY_MM_DD","YYYY.MM.DD","YYYY.MM.DD HH:mm:ss","yyyy/MM/dd HH/mm/ss",
                "yyyy.MM.dd HH.mm.ss","yyyy-MM-ddHH:mm:ss","yyyy/MM/ddHH:mm:ss","yyyyMMddHH:mm:ss",
                "YYYY_MM_DD HH:mm:ss","yyyy-MM-dd HH-mm-ss"};
        if(time==null){
            return null;
        }
        try {
           return org.apache.commons.lang3.time.DateUtils.parseDate(time,parsePatterns);
        }catch (Exception e){
            log.error("日期转换错误:"+e.getMessage());
            return null;
        }

    }
利用Pattern和Matcher实现多个字符替换
场景描述:经常会遇到,需要做个功能,如给定如下代码的一串字符,要将某数据中的全部这些字符转换成某某,此时会用到,很多也都会用到将字符切割成一个一个,然后利用replaceAll(正则,最终要替换成的值)这样去做,其实会有个坑,当有特殊字符需要做进一步处理,当有更特殊的字符,会更加错误,如下代码会展示错误和正确用法。
遇到的坑
public static void main(String[] args) {
        String shijian="~!@#¥%……&*()+字S9";
        String bstr="9S2020S#0&91*0lpla!kkk@pkl";
        String zhi=delSpecialChara(shijian);
        System.out.println(zhi);
        String astr=bstr.replaceAll(zhi,"好");
        System.out.println(astr);
    }
/**将指定所需过滤字符切割并重组为正则规则表达式*/
public static String delSpecialChar(String content){
        String ruleContent=null;
        if(!StringUtils.isEmpty(content)&&content!=null){
            StringBuffer buffer=new StringBuffer();
            for(int i=0;i<content.length();i++){
                buffer.append("\\").append(content.charAt(i)).append("|");
            }
            ruleContent=  buffer.deleteCharAt(buffer.length()-1).toString();
        }
        return ruleContent;
    }
输出如下:

~|\!|@|#|\¥|%|\…|\…|&|*|\(|\)|+|\字|\S|\9
好好好好好好好好好好好好好好好好好好好好好好好好好好

惊不惊讶,难受不难受,把值全部干掉了,为什么,因为重点在\S这个上面,它在正则中表示的是什么,代表全部不为空的值全部匹配,正好小写s相反,这方面可以查看资料。

那好把它去掉,再看。


image.png

发现了什么,数字是不起作用的,如果想用这个也可以,不过需要在搞点手脚,可是作为程序员,哪来这么多闲心,既然不爽那就不用,下面就用又果断又舒服,一次性嘎嘎搞定的上场。

 public static void main(String[] args) {
        String shijiana="[~!@#¥%……&*()+字920SkpTYhm8]";
        String bstr="9S2020S#0&91*0lpla!kkk@pkl";
        System.out.println("正则结果值:"+zhengze(bstr,shijiana));
    }
/**字符正则替换*/
    public static String zhengze(String zhi,String biaodashi){
        Pattern pattern=Pattern.compile(biaodashi);
        Matcher matcher=pattern.matcher(zhi);
        //将字符串中所有符合的特殊字符过滤,替换为指定值
        String nstr=matcher.replaceAll("正");
        return nstr;
    }

输出如下:


image.png
总结:如何,一招搞定,随你怎么填,想替换哪些字符随你填,直接一个搞定。

相关文章

  • 第二章 java程序优化

    本章主要知识点: java程序中字符串的优化 慎用正则表达式 java中集合的优化 java中IO优化 java中...

  • 金三银四面试题 -java数据结构

    Java 中的集合是什么? 在 Java 中,集合是一个框架,它提供了用于存储和操作对象集合的体系结构。在 JDK...

  • 芯灵思SinlinxA33开发板安卓开发-java语言基础(9)

    java中的集合类: Java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最基本...

  • 集合框架

    集合框架的概念 集合:存放数据的容器 集合框架:java中,用于表示集合,以及操作集合的类和接口的统称 数组与集合...

  • Java 小技巧

    前端基础(一):字符串String常用操作java中Date日期类型的大小比较Java 正则表达式

  • java | 集合框架

    集合框架 集合代表了一组对象,Java中的集合框架定义了一套规范,用来表示、操作集合,使具体操作与实现细节解耦。而...

  • 常用的pom文件

    #简化编码 #各种工具集合 java操作的redis #springboot中mybatisplus 未完待续

  • Java基础-集合框架

    概念 Java集合框架提供了数据持有对象的方式,提供了对数据集合的操作,Java集合框架位于java.util包下...

  • 集合框架

    java集合框架提供了数据持有对象的方式,提供了对数据集合的操作。java集合框架位于java.util包下,主要...

  • Java(1.8) 集合中的LinkedList

    java(1.8)集合中的HashSetJava(1.8) 集合中的ArrayList Java(1.8)集合类中...

网友评论

      本文标题:java中正则表达式操作集合

      本文链接:https://www.haomeiwen.com/subject/uoyeektx.html