正则表达式的应用

步骤:
(1)定义正则表达式
String regex=”要匹配的规则”;
(2)检验目标字符串是否与给定的正则表达式相匹配:public boolean matches(String regex)
goalString.matches(regex);
应用:
1, 效验QQ


import java.util.Scanner;

/**
 * 需求:校验一个QQ号码
 *      定义一个规则:1)由5到10为组成的数字
 *                2)不能以0开头  
 *  分析:
 *      1)键盘录入一个QQ号码,使用字符串接收
 *      2)定义一个校验QQ的功能
 *      3)在main()中调用返回boolean类型
 * @author Apple
 */
public class RegexDemo2 {

    public static void main(String[] args) {

        //创建键盘了录入对象
        Scanner sc = new Scanner(System.in) ;

        //录入并接收数据
        System.out.println("请您输入QQ号码: ");
        String QQ = sc.nextLine() ;
        boolean flag = checkQQ(QQ) ;
        System.out.println("flag: "+flag);
    }

    public static boolean checkQQ(String qq){
        /*//定义正则规则
        String regex = "[1-9][0-9]{4,9}" ;

        //public boolean matches(String regex)告知此字符串是否匹配给定的正则表达式。 
        boolean flag = qq.matches(regex) ;
        return flag ;*/

        //直接返回
        return qq.matches("[1-9]\\d{4,9}");
    }
}

2, 效验手机号码

package org.westos.regex_01;

import java.util.Scanner;

/**
 * 使用正则表达式校验手机号码:
 *      规则:
 *          手机号码:
 *              13689257284
 *              13688886666
 *              13892866555
 *              18992844422
 *              13257222222
 *              ...
 * 
 *1)创建键盘录入对象,录入手机号码
 *2)定义正则规则:
 *3)String类的特有功能
 *          public boolean matches(String regex)告知此字符串是否匹配给定的正则表达式。 
 *4)输出
 *
 * @author Apple
 */
public class RegexDemo {

    public static void main(String[] args) {

        //创建键盘录入对象
        Scanner sc = new Scanner(System.in) ;

        //录入并接收
        System.out.println("请您输入一个手机号码:");
        String phone = sc.nextLine() ;

        //定义正则规则
        String regex = "1[38][0-9]{9}" ;

        //匹配当前正则表达式是否和录入的手机号符合
        boolean flag = phone.matches(regex) ;
        System.out.println("flag:"+flag);
    }
}

3, 效验邮箱地址:

package regex;

import java.util.Scanner;

/**
 * /**
 * 需求:校验邮箱:
 *      QQ邮箱:
 *          919081924@qq.com
 *          fengqingyang@163.com
 *          xxxxx@126.com
 *          zhangsan@westos.com
 *          lisi@sina.com
 *          wangwu@istone.com.cn....
 * 分析:1)键盘录入邮箱
 *      2)定义正则规则
 *      3)使用String中的特有功能校验
 *      4)输出即可
 * @author Apple
 */

public class Emailregex {

    public static void main(String[] args) {

        System.out.println("请输入您的邮箱:");
        Scanner sc=new Scanner(System.in);
        String email=sc.nextLine();

        //定义正则表达式
        //String regex="[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,6}(\\.[a-zA-Z]{2,3})+";//X=(\\.[a-z] {2,3}) X+一次或多次com.cn...
        String regex="\\w+@\\w{2,6}(\\.[a-zA-Z]{2,3})+";

        //效验
        boolean flag=email.matches(regex);
        System.out.println("邮箱地址:"+flag);   
    }
}

4, String的分割功能:
public String[] split(String regex)
调用:
String goalString;//需要进行分割的字符串
//String regex=”要分割的规则”;//要分割的规则
String[] strArray=goalString.split(“要分割的规则”);

package regex;

import java.util.Scanner;
/**
 * String的分割功能:
 *      
 * public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串
 *      返回值类型是一个字符串数组类型
 * 
 * 应用场景:
 *        QQ,搜索好友,相亲网:世纪佳缘...
 *          女  "18-24"
 *      String ages = "18-24" ;
 * @author Apple
 */
public class SplitRegex {
public static void main(String[] args) {

        //定义一个字符串
        String ages = "18-24" ;

        //定义正则规则
        String regex = "-" ;

        //public String[] split(String regex)
        String[] strArray = ages.split(regex) ;

        //如何得到当前字符数组中的元素(转换int类型的数据)
        int startAge = Integer.parseInt(strArray[0]) ;
        int endAge = Integer.parseInt(strArray[1]) ;

        System.out.println();
        //键盘录入一个年龄,属于int类型的数据
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in) ;

        //录入并接收数据
        System.out.println("请您输入一个年龄:");
        int age = sc.nextInt() ;

        //判断是否符我们要找的一类人
        if(age>=startAge && age<=endAge){
            System.out.println("这就是我想要的...");
        }else{
            System.out.println("不是我们要找的...");
        }
        /**
         * 运行结果: 
         * 请您输入一个年龄:
         * 21 
         * 这就是我想要的...
         * 
         */
    }
}
package org.westos.regex_02;
/**
 * 分割功能的应用:
 * @author Apple
 */
public class RegexDemo2 {

    public static void main(String[] args) {

        //定义个字符串
        String str1 = "aa,bb,cc" ;
        //使用分割功能
        String[] strArray1 = str1.split(",") ;
        //遍历字符串数组
        for(int x = 0 ; x < strArray1.length; x ++){
            System.out.println(strArray1[x]);
        }

        System.out.println("------------------");

        //字符串:
        String str2 = "aa       bb                    cc" ;
        //使用切割功能:
        String[] strArray2 = str2.split(" +") ;
        for(int x = 0 ; x <strArray2.length ; x++){
            System.out.println(strArray2[x]);
        }

        System.out.println("--------------------");

        String str3 = "aa.bb.cc" ;
        //分割功能
        String[] strArray3 = str3.split("\\.") ;
        for(int x =0 ; x<strArray3.length ; x ++){
            System.out.println(strArray3[x]);
        }

        //硬盘上的路径表现形式:用两个反斜线代表一个反斜线
        //E:\\JavaSE\\JavaCode\\day13
        String str4 = "E:\\JavaSE\\JavaCode\\day13" ;
        //使用分割功能
        String[] strArray4 = str4.split("\\\\") ;
        for(int x = 0 ; x <strArray4.length ; x ++){
            System.out.println(strArray4[x]);
        }
    }
}

5, String类中的替换功能
public String replaceAll(String regex,String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

package regex;

/**
 * String类中的替换功能:和正则表达式有关系
 *  public String replaceAll(String regex,Stringreplacement)
 *   使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
 * 
 * @author Apple
 */
public class replaceString {
    public static void main(String[] args) {

        // 定义一个字符串:
        String str = "helloword123JavaSE45678Javaweb";

        // 需求:让当前这个字符串中的数字不显示出来
        // 定义当前大串中数字定义正则规则
        // String regex = "[0-9]+" ;
        String regex = "\\d+";
        String s = "*";

        // public String replaceAll(String regex,String replacement)
        String result = str.replaceAll(regex, s);
        System.out.println("result:" + result);
        /**
         * 运行结果:
         * result:helloword*JavaSE*Javaweb
         */
    }
}
package org.westos.regex_02;

import java.util.Arrays;

/**
 * 我有如下一个字符串:"91 27 46 38 50"
    请写代码实现最终输出结果是:"27 38 46 50 91"

    分析:
            1)定义这个字符串
            2)使用分割功能分割成一个字符串数组
            3)如何得到一个int类型数组:动态初始化定义int数组 int[] arr = new int[字符串数数组.length] ;
            4)遍历int数组
                    获取每一个元素:arr[x] = Integer.parseInt(字符串数组对象[x])
            5)排序:Arrays数组工具类型快速排序:sort(arr)
            6)再去遍历int类型数组获取每一个元素,用字符串缓冲区来进行拼接
            7)输出字符串
 * @author Apple
 */
public class RegexTest {

    public static void main(String[] args) {

        //定义一个字符串
        String str = "91 27 46 38 50" ;

        //使用分割功能
        String[] strArray = str.split(" ") ;

        //定义一个int类型的数组,动态初始化
        int[] arr = new int[strArray.length] ;

        //遍历int类型的数组
        for(int x = 0 ; x < arr.length ; x ++){
            arr[x] = Integer.parseInt(strArray[x]) ;
        }

        //使用Arrays数组工具类型进行操作
        Arrays.sort(arr) ;


        //创建StringBuilder缓冲区对象
        StringBuilder sb = new StringBuilder() ;

        //再去遍历int类型的数组,目的使用为了拼接
        for(int x = 0 ; x < arr.length ; x ++){
            //使用追加功能
            sb.append(arr[x]).append(" ") ;
        }

        //要将字符串缓冲转换成String类型,并且去除两端空格
        String result = sb.toString().trim() ;
        System.out.println("result:"+result);
    }
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值