【JAVA正则表达式综合练习】

一、治疗口吃。

将字符串“我我我我我我我..........我.......要要要要要..................要要要要...学习习习习.......习习习习习习习习编程程程程程程.......程程程程程程程程程”变成“我要学习编程”

分析:先将....去掉:使用"\\.+"模式,再将叠词替换成一个:使用"(.)\\1+"模式。

代码:

 1 package p02.Exercise;
 2 
 3 public class Demo01 {
 4     public static void main(String args[])
 5     {
 6         String str="我我我我我我我..........我.......要要要要要..................要要要要...学习习习习.......习习习习习习习习编程程程程程程.......程程程程程程程程程";
 7         //1.先去掉.
 8         String regex="\\.+";
 9         str=str.replaceAll(regex, "");
10 //        System.out.println(str);
11         //2.合并叠词。
12         regex="(.)\\1+";
13         str=str.replaceAll(regex, "$1");
14         System.out.println(str);
15     }
16 }
View Code

运行结果:

我要学习编程

二、ip地址排序。

将若干个ip地址排序输出。

"192.168.10.34  127.0.0.1   105.70.11.75            3.3.3.3"

思路:排序使用TreeSet自动完成,但是排序方式是根据字符串的字典序排序,要想按照大小排序,需要添加前导0,输出的时候需要去掉前导0.

代码:

 1 package p02.Exercise;
 2 
 3 import java.util.TreeSet;
 4 
 5 public class Demo02 {
 6     public static void main(String args[])
 7     {
 8         String str="192.168.10.34   127.0.0.1   105.70.11.75            3.3.3.3";
 9         //1.先分割ip地址。
10         String regex=" +";
11         String arr[]=str.split(regex);
12         for(String s:arr)
13             System.out.println(s);
14         System.out.println();
15         System.out.println();
16     
17         //2.给每个字节段不足3位的补零,先补上两个0
18         regex="(\\d+)";
19         for(int i=0;i<arr.length;i++)
20         {
21             arr[i]=arr[i].replaceAll(regex, "00$1");
22         }
23         //3.去掉多余的0,只保留三位。
24         regex="0*(\\d{3})";
25         for(int i=0;i<arr.length;i++)
26         {
27             arr[i]=arr[i].replaceAll(regex, "$1");
28             System.out.println(arr[i]);
29         }
30         System.out.println();
31         System.out.println();
32         //4.放入TreeSet集合进行排序。
33         TreeSet <String>ts=new TreeSet<String>();
34         for(String s:arr)
35         {
36             ts.add(s);
37         }
38         regex="0*(\\d+)";
39         for(String s:ts)
40         {
41             System.out.println(s.replaceAll(regex, "$1"));
42         }
43     }
44 }
View Code

运行结果:

 1 192.168.10.34
 2 127.0.0.1
 3 105.70.11.75
 4 3.3.3.3
 5 
 6 
 7 192.168.010.034
 8 127.000.000.001
 9 105.070.011.075
10 003.003.003.003
11 
12 
13 3.3.3.3
14 105.70.11.75
15 127.0.0.1
16 192.168.10.34
View Code

在去掉多余的0的时候,使用的模式是:"0*(\\d+)",这样即使全部都是0,在最后使用$1进行替换的时候也能留住最后一个0。

 三、校验邮箱。

使用的模式:"\\w+@[a-zA-Z0-9]+(\\.[a-z]{2,3}){1,2}",意思用户标识符为字母数字下划线,长度不限;邮件服务器域名第一个单词应为字母数字的组成,其余应为小写字母组成。

代码:

 1 package p02.Exercise;
 2 
 3 public class Demo03 {
 4     public static void main(String args[])
 5     {
 6         String str="kdyzm@sina.com";
 7         String regex="\\w+@[a-zA-Z0-9]+(\\.[a-z]{2,3}){1,2}";
 8         System.out.println(str.matches(regex));
 9     }
10 }
View Code

 

posted @ 2015-01-22 20:50  狂盗一枝梅  阅读(390)  评论(0编辑  收藏  举报