zoukankan      html  css  js  c++  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位的补零,先补上两个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
  • 相关阅读:
    Objective-C Memory Management Being Exceptional 异常处理与内存
    Objective-C Memory Management 内存管理 2
    c语言全局变量与局部变量(当变量重名时)的使用情况
    c语言指针字符串与字符数组字符串的区别
    c语言数组不同初始化方式的结果
    补码的用途
    struts2框架加载配置文件的顺序
    CSS盒子模型
    基于注解整合struts2与spring的时候如果不引入struts2-spring-plugin包自动装配无效
    @Resource注解省略name属性后的行为
  • 原文地址:https://www.cnblogs.com/kuangdaoyizhimei/p/4242684.html
Copyright © 2011-2022 走看看