对于正则表达式的应用总结

        最近做一项目  要求特定字符串的替换,以前做时用的是 split() 分割,然后循环 加上的,但是后来发现这样对数据的要求度比较高,不能存在 分割字符,所以才用了正则,案例如下:

         String str1="1973.07--1977.09  某@某省某$某县某某镇%小学#教师。1977.09--1979.09  某某省&某某县某某&镇初中教师。1988.11--1993  某某省某某市委宣传部干事、副科级、科长(1987.09--今 在某某大学某某系某某专业学习)。";要替换此字符串中的 日期格式i    为1973年07月 

 

 

 

         Matcher matcher = Pattern.compile("\\d{4}.\\d{1,2}").matcher(str1); //用正则匹配日期格式 1973.08 或1973.8

 

         StringBuffer sbr = new StringBuffer(); 

 

          while(matcher.find()){                     //循环查找匹配值  

 

                String dateTime=matcher.group(0);                //用matcher.group(0) 取到匹配值  然后做处理

 

                if(dateTime!=null&&!dateTime.equals("")){

 

                       dateTime=dateTime.substring(0,4)+"年";

 

                   }

                matcher.appendReplacement(sbr, dateTime); //将处理完成后的匹配值用appendReplacement(sbr, dateTime); 方法替换原有的

 

             }

            matcher.appendTail(sbr);                 //添加最后一次匹配值              

                 

          str1=sbr.toString().replaceAll("--","至").replaceAll("<", "(").replaceAll(">",")").replaceAll(" ", "").replaceAll(" ","").replaceAll("[&$#@%]", "");

 

 System.out.println(str1);

 

 

 

 

行了  大功告成!!! 至于正则表达式的一些规则如下:

1.匹配字符串用 (str)

2.匹配次数      {m,n}

3.匹配范围      [a-z]

4.匹配情况      x|y

 

需要记匹配项

   \b  空字符边界

   \B  非空的字符边界

   \d   数字

   \D   非数字

   \s   空字符串

   \S   非空字符串

具体参考:http://baike.baidu.com/view/94238.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值