Pattern与Matcher

Pattern

Pattern是java.util.regex包下处理正则的工具类。
Pattern的构造方法是private的。(private Pattern(String p, int f)),实例化要调用complie()。
//源码
public static Pattern compile(String regex) {
        return new Pattern(regex, 0);
}
//实例
 String regex = "\\#\\{\\w+\\}";
  Pattern pattern = Pattern.compile(regex); //正则编译

主要方法

  1. public String pattern():返回处理之后的正则表达式,比如会将"\w+“转为”\w+"。
  2. public String[] split(CharSequence input):表示正则表达式分割字符串。
//源码:
 public String[] split(CharSequence input) {
        return this.split(input, 0);	//调用的其实为重载后的spilt()
    }
  1. public String[] split(CharSequence input, int limit):表示正则表达式分割字符串,但限制了分割后字符串的个数,返回的是String类的字符串。
  2. public static boolean matches(String regex, CharSequence input):进行匹配返回boolean值。
  3. public Matcher matcher(CharSequence input):用于获取Matcher的实例。
public class Demo05 {
    public static void main(String[] args) {
        String str = "ABC123";
        String number = "aa111bb222cc444dd666eee777fff8888ggg";
        String regex = "\\d+";
        String regex1 = "\\w+";
        Pattern patternA = Pattern.compile(regex);   //正则编译
        Pattern patternB = Pattern.compile(regex1);   //正则编译
        System.out.println("pattern():"+patternB.pattern());
        System.out.println("split():"+ Arrays.toString(patternA.split(number)));
        System.out.println("matcher():"+patternB.matches(regex1,str));
    }
}
结果
pattern():\w+
split():[aa, bb, cc, dd, eee, fff, ggg]
matcher():true

Matcher

Matcher是java.util.regex包下处理正则的工具类。
//使用pattern.matcher获取Matcher`在这里插入代码片`
Matcher matcher = pattern.matcher(sql);     //正则匹配

主要方法

  1. public String group(int group):用于输出数据,最好为0,测试时输入其他数字会报错。
//源码
public String group() {	//调用了group()重载的方法
        return this.group(0);
  1. public boolean find():只要正则表达式有一部分满足正则返回true。
		String str = "abc123";
        String regex = "\\d+";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        while(matcher.find()){	//有一部分满足正则返回true
            System.out.println("输出则表示matcher.find()为true");
            System.out.println("matcher.group():"+matcher.group());
        }
结果
输出则表示matcher.find()true
matcher.group()123
  1. public boolean lookingAt():只匹配第一个字符串,匹配成功或失败都将结束。
		String str = "abc123";
        String regex = "[a-z]";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        while(matcher.lookingAt()){
            System.out.println("输出则表示matcher.lookingAt()为true");
            System.out.println("matcher.group():"+matcher.group());
        }
结果
输出则表示matcher.lookingAt()true
matcher.group():a
输出则表示matcher.lookingAt()true
matcher.group():a


  1. public boolean matches():必须完全匹配,不然返回false。
		String str = "abc123";
        String regex = "[a-z]";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        while(matcher.matches()){
            //完全匹配,则进来输出数据
            System.out.println("输出则表示matcher.matches()为true");
            System.out.println("matcher.group():"+matcher.group());
        }
结果
//没有结果,表示完全匹配失败
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值