JAVA-正则表达式

  • \:转义符
  • ^:以...开头
  • $:以...结尾
  • *:有0个或多个 count>=0
  • +:有1个或多个 count>=1
  • ?:有0个或1个 count=1|count=0

    • [0-9]:范围数字0到9
    • [a-z]:范围a-z
    • [A-Z]:范围A-Z
    • [^0-9]:取反,非0-9
    • [abc]:匹配a,b,c

    • {n} : 匹配n次
    • {n,} : 匹配n次及n次以上
    • {n,m}:匹配n到m次

  • 简介写法
    • \d:匹配一个数字字符,等价于[0-9]
    • \D:匹配一个非数字字符,等价于[^0-9]
    • \s:匹配不可见字符
    • \S:匹配任意可见字符
    • \w:匹配包括下划线在内的任何单词字符
    • 等价于[a-zA-Z0-9_\u4e00-\u9fa5]
    • \W:匹配任何非单词字符

Pattern类

  • 用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建

  • 可以通过Pattern.complie(String regex)创建一个正则表达式

  • 只能做一些简单的匹配操作

Matcher类

  • 构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例 Matcher m = p.matcher("aaaaab");

  • 支持便捷强大的正则匹配操作,包括分组、多次匹配支持

Matcher三大方法

  • Matcher.matches():对整个字符串进行匹配,只有整个字符串都匹配了才返回true
  • Matcher.lookingAt():对前面的字符串进行匹配,只有匹配到的字符串在最前面才返回true
  • Matcher.find():对字符串进行匹配,匹配到的字符串可以在任何位置

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PhoneGet {
    public static void main(String[] args) {
        String str = "小黑的电话是17317065260小白的电话是17371056700";

        String regex = "((.{2,3})的电话是)(\\d{3})(\\d{4})(\\d{4})";

        Pattern compile = Pattern.compile(regex);
        Matcher matcher = compile.matcher(str);

        while (matcher.find()) {
            System.out.println(matcher.group(3) + "****" + matcher.group(5));
        }
    }
}

去除叠字

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class DIeCi {
    public static void main(String[] args) {
        String str = "我我我。。。。1213要要要123学学。。。编编123123程";

        String regex = "(.)(\\1+)";

        str = str.replaceAll("[^\\u4e00-\\u9fa5]","");

        System.out.println(str);

        Pattern compile = Pattern.compile(regex);
        Matcher matcher = compile.matcher(str);

        while (matcher.find()) {
            str = str.replaceAll(matcher.group(0),matcher.group(1));
        }

        System.out.println(str);
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值