【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="[email protected]";

 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

 

你可能感兴趣的:(java正则表达式)