首页 > 代码库 > 【JAVA正则表达式综合练习】

【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位的补零,先补上两个018         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.07510 003.003.003.00311 12 13 3.3.3.314 105.70.11.7515 127.0.0.116 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

 

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