正则表达式

正则表达式

规则字符在:java.util.regex Pattern类中
字符:

构造匹配
x字符 x
\反斜线字符
\r回车符 (‘\u000D’)

字符类

构造匹配
[abc]a、b 或 c(简单类)
[^abc]任何字符,除了 a、b 或 c(否定)
[a-zA-Z]a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]]a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]]d、e 或 f(交集)
[a-z&&[^bc]]a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]]a 到 z,而非 m 到 p:[a-lq-z](减去)

预定义字符类

构造匹配
.任何字符(与行结束符可能匹配也可能不匹配)
\d数字:[0-9]
\D非数字: [^0-9]
\s空白字符:[ \t\n\x0B\f\r]
\S非空白字符:[^\s]
\w单词字符:[a-zA-Z_0-9]
\W非单词字符:[^\w]

边界匹配器

构造匹配
^行的开头
$行的结尾
\b单词边界(就是不是单词字符的地方)

数量词

构造匹配
X?X,一次或一次也没有
X*X,零次或多次
X+X,一次或多次
X{n}X,恰好 n 次
X{n,}X,至少 n 次
X{n,m}X,至少 n 次,但是不超过 m 次

正则表达式的应用

判断功能

/*
 * 需求:
 *      判断手机号是否满足需求?
 */
import java.util.Scanner;

public class RegeDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入手机号码:");
        String phone = scanner.nextLine();

        //手机号码的限制
        String regex = "1[38]\\d{9}";

        //调用功能,返回即可
        boolean flag = phone.matches(regex);

        //输出结果
        System.out.println("flag:"+flag);
    }
}

邮箱判断

/*
 * 判断邮箱
 * 
 */
public class RegeDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入邮箱:");
        String email = scanner.nextLine();

        //邮箱的限制
//      String regex = "[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,6}(\\.[a-zA-Z_0-9]{2,3})+";
        String regex = "\\w+@\\w{2,6}(\\.\\w{2,3})+";
        //调用功能,返回即可
        boolean flag = email.matches(regex);

        //输出结果
        System.out.println("flag:"+flag);
    }
}

分隔功能

/*
 * 分隔功能
 * String的public String
 */
public class RegexDemo {
    public static void main(String[] args) {
        //定义一个年龄范围
        String ages = "18-24";
        //定义规则
        String regex = "-";
        //调用方法
        String[] strArray = ages.split(regex);
        //遍历
        for(int x= 0; x<strArray.length; x++) {
            System.out.println(strArray[x]);
        }
        int startAge = Integer.parseInt(strArray[0]);
        int endAge = Integer.parseInt(strArray[1]);
    }
}
/*
 * 分隔功能
 */
public class RegexDemo {
    public static void main(String[] args) {
        String s1 = "aa,bb,cc";
        String[] str1Array = s1.split(",");
        for(int x = 0;x < str1Array.length;x++) {
            System.out.println(str1Array[x]);
        }
        System.out.println("----------------");

        String s2 = "aa.bb.cc";
        String[] str2Array = s2.split("\\.");
        for(int x = 0;x < str2Array.length;x++) {
            System.out.println(str2Array[x]);
        }
        System.out.println("----------------");

        String s3 = "aa  bb              cc";
        String[] str3Array = s3.split(" +");
        for(int x = 0;x < str3Array.length;x++) {
            System.out.println(str3Array[x]);
        }
        System.out.println("----------------");

        //硬盘上的路径,我们应用\\代替\
        String s4 = "E:\\java\\javaweb全\\day09\\day09_res";
        String[] str4Array = s4.split("\\\\");
        for(int x = 0;x < str4Array.length;x++) {
            System.out.println(str4Array[x]);
        }
        System.out.println("----------------");
    }
}

获取功能

获取功能
正则表达式的编译表示形式。
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();

public class RegexDemo {

    public static void main(String[] args) {
        //将给定的正则表达式编译成模式对象
         Pattern p = Pattern.compile("a*b");
         //通过模式对象得到匹配对象
         Matcher m = p.matcher("aaaaab");
        // 调用匹配器的功能
         boolean b = m.matches();
         System.out.println(b);

         //
         String string="aaaaab";
         String regex = "a*b";
         boolean bb = string.matches(regex);
         System.out.println(bb);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值