12.正则表达式

正则表达式本身就是一个字符串,用一个正则表达式来匹配另一个或另一组字符串

预定义字符类

. 任意字符(与行结束符可能匹配也可能不匹配)

\d 数字:[0-9]

\w 单词字符:[a-zA-Z_0-9]

边界匹配器

^ 行开头

$ 行结尾

数量:

X? 一次或0次

X* 0次或多次(包括1次)

X+ 一次或多次

X{n} 恰好n次

X{n, } 至少n次

X{n,m} 至少n次,不超过m次

正则表达式四种常用方法:

匹配

在java中,“”里面的\表示特殊含义,所以需要使用两个\来表示\,

    //qq邮箱
    String email = "damon@qq.com";
    String reg2 = "\\w+@[qQ]{2}\\.com";
    b = email.matches(reg2);
    System.out.println(b);

拆分

    System.out.println("-----------拆分----------");
    String content = "hello I am Lilei, welcome to java";
    String[] contents = content.split("[, ]");

    System.out.println(contents.length);
    for(String s : contents){
        System.out.println(s);
    }

这两个都不需要借助正则表达式相关类,可以直接借助String内部包含的match方法完成。

正则表达式相关类Pattern(模式),Match(匹配)

可以将一个正则表达式对象与多名需要匹配的对象进行匹配,或者仅使用一次。如果仅使用一次,则直接使用pattern的match静态方法,否则就调用pattern的静态方法compile创建一个pattern对象,使之与多个匹配器匹配

    //java中正则表达式有关的类,Pattern(模式)   Matcher
    System.out.println("---------Pattern------Match------------");
    //1将正则表达式对象编译成Pattern对象
    Pattern p = Pattern.compile("a+b");//引号内是正则表达式,表示1到多个a,一个b
    //2 调用matcher方法返回匹配器,一个模式对象可以对应多个匹配器对象
    Matcher m = p.matcher("aaaaaaaaaaaaaaaaaaab");
    Matcher m2 = p.matcher("aaab");
    //3  调用匹配器的matches完成匹配
    boolean b3 = m.matches();
    System.out.println(b3);
    //4 如果只调用一次匹配器
    boolean b4 = Pattern.matches("a*b", "aaaaaaaaab");
    System.out.println(b4);

获取:

    String con = "java是世界上最好的语言,Java真棒,JAVA牛";
    String reg3 = "([jJ]ava)|(JAVA)";//使用|表示或
    Pattern p2 = Pattern.compile(reg3);
    Matcher matcher = p2.matcher(con);
    while(matcher.find()){
        System.out.print(matcher.group() + "  ");
    }

输出结果为
java Java JAVA

替换

    //4 替换
    String con2 =  con.replaceAll(reg3, "php");
    System.out.println(con2);

    //扩展案例,将其改造为一句没用重复和标点的话
    String say1  = "我我我我我我我我我我,,。喜喜喜喜。。欢欢欢欢。欢欢,编编编编程";
    String say01 = "我我。喜欢喜欢喜欢喜欢编程编程编程";
    //1 替换
    String say2 = say1.replaceAll("[\\.\\。\\,]", "");
    String say3 = say2.replaceAll("(.)\\1+","$1");
    String say4 = say01.replaceAll("(.)(.)(\\1\\2)+", ("$1$2")).
            replaceAll("(.)\\1", "$1").replaceAll("。", "");
    System.out.println(say4);
    System.out.println(say3);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值