正则表达式知识详解系列,通过代码示例来说明正则表达式知识
源代码下载地址:http://download.csdn.net/detail/gnail_oug/9504094
示例功能:
1、将手机号部分数字替换成*
3、更改日期格式
/** * 替换 * @date 2016-04-20 18:09:00 * @author sgl */ public static void replace(){ System.out.println("------将数字替换成*--------"); String str="2013hello04world20"; //将数字替换成* System.out.println(str.replaceAll("\\d","*")); //将连续的数字替换成* System.out.println(str.replaceAll("\\d+","*")); //将手机号后四位替换成* System.out.println("------将手机号后四位替换成*--------"); str="15200001111"; System.out.println(str.replaceAll("\\d{4}$","****")); Pattern p=Pattern.compile("\\d{4}$"); Matcher m=p.matcher(str); System.out.println(m.replaceAll("****")); //给链接地址增加a标签转换成超链接 System.out.println("--------给链接地址增加a标签转换成超链接---------"); str="http://www.baidu.com,http://www.google.com"; //下面这个正则只是针对上面两个网址举例使用,因此这里不考虑复杂的网址 p=Pattern.compile("(http://www\\..*?\\.com)"); m=p.matcher(str); while(m.find()){ System.out.println(m.group()+" 位置:["+m.start()+","+m.end()+"]"); } //$1表示正则表达式里的第一个分组,$2表示第二个分组,依此类推 System.out.println(m.replaceAll("<a href='$1'>$1</a>")); //日期格式调整成yyyy-MM-dd格式 System.out.println("-----日期格式调整成yyyy-MM-dd格式------"); str="我的生日是01/21/2001,你的生日是10/15/1999"; p=Pattern.compile("(\\d{1,2})/(\\d{1,2})/(\\d{4})"); m=p.matcher(str); while(m.find()){ System.out.println(m.group()+" 位置:["+m.start()+","+m.end()+"] 年:"+m.group(3)+" 月:"+m.group(1)+" 日:"+m.group(2)); } System.out.println(m.replaceAll("$3-$1-$2")); //把手机号中间几个数字替换成* System.out.println("----把手机号中间几个数字替换成*-----"); str="15200001111,13932333232"; p=Pattern.compile("(\\d{3})(\\d{4})(\\d{4})"); m=p.matcher(str); System.out.println(m.replaceAll("$1****$3")); }
运行结果:
------将数字替换成*-------- ****hello**world** *hello*world* ------将手机号后四位替换成*-------- 1520000**** 1520000**** --------给链接地址增加a标签转换成超链接--------- http://www.baidu.com 位置:[0,20] http://www.google.com 位置:[21,42] <a href='http://www.baidu.com'>http://www.baidu.com</a>,<a href='http://www.google.com'>http://www.google.com</a> -----日期格式调整成yyyy-MM-dd格式------ 01/21/2001 位置:[5,15] 年:2001 月:01 日:21 10/15/1999 位置:[21,31] 年:1999 月:10 日:15 我的生日是2001-01-21,你的生日是1999-10-15 ----把手机号中间几个数字替换成*----- 152****1111,139****3232