您的位置:首页 > 编程语言 > Java开发

正则表达式知识详解之替换 (java版示例)

2016-04-29 09:23 447 查看
正则表达式知识详解系列,通过代码示例来说明正则表达式知识 

源代码下载地址:http://download.csdn.net/detail/gnail_oug/9504094

示例功能:

1、将手机号部分数字替换成*

2、给url增加超链接a标签

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: