• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Pattern类,Matcher类

武飞扬头像
太阳之神aboluo
帮助3

目录

1 Pattern类

2 Matcher类

2.1 matchers( )和 lookingAt( )

2.2 find( ),groupCount( )和group( )

2.3 start( )和end( )

 2.4 replaceFirst( )和replaceAll( )


        在进行正则匹配时,"正则字符串"会被编译成Pattern对象保存在内存中,以"待匹配字符串"作为参数通过Pattern对象创建出Matcher对象,然后对匹配结果做针对性操作

1 Pattern类

java.util.regex.Pattern
方法名 说明
静态 compile("regex") 将"正则字符串"编译成Pattern对象
matcher("str") 使用Pattern对象创建Matcher对象
split("str") 对str按照regex分隔,返回String[ ]
静态 matcher("regex","str") 对整串字符串的校验
Pattern pattern = Pattern.compile("\\d*");
  1.  
    Matcher matcher1 = pattern.matcher("abc456");
  2.  
    Matcher matcher2 = pattern.matcher("123456");
  3.  
    Arrays.toString(pattern.split("12ab33db56cf")); //返回[, ab, db, cf]

如果一个Pattern对象只用一次,则可以使用Pattern的静态方法matchs( )   String类的matchs( )方法本质就是调用Pattern类的matchs( )方法

boolean flag = Pattern.matches("\\d*", "123456");

2 Matcher类

java.util.regex.Matcher
方法名 说明
matchers( ) 整个字符串与regex是否匹配,返回boolean
lookingAt( ) 字符串前面部分与regex是否匹配,返回boolean
find( ) 字符串继续往后匹配,是否还有满足regex的子串,返回boolean
groupCount( ) 返回regex表达式中捕获组个数
group(int) / group(nama) 返回上一次find( )匹配过的子串的捕获组,无参默认0
start( ) 返回上一次find( )匹配过的子串的开始索引
end( ) 返回上一次find( )匹配过的子串的结束索引 1
replaceFirst(replacement) 用replacement替换第一次匹配的内容
replaceAll(replacement) 用replacement替换所有匹配中的内容

2.1 matchers( )和 lookingAt( )

  1.  
    Pattern pattern = Pattern.compile("\\d ");
  2.  
    Matcher matcher = pattern.matcher("123abc");
  3.  
    matcher.matches(); //返回false
  4.  
    matcher.lookingAt(); //返回true

2.2 find( ),groupCount( )和group( )

  1.  
    Pattern pattern = Pattern.compile("(\\d{3})-(\\d{7})");
  2.  
    Matcher mc = pattern.matcher("728-4765164 520-7758258");
  3.  
    while (mc.find()) {
  4.  
    System.out.println("分组的个数有:" mc.groupCount());
  5.  
    for (int i = 0; i <= mc.groupCount(); i ) {
  6.  
    System.out.println("第" i "个分组为:" mc.group(i));
  7.  
    }
  8.  
    }
  9.  
     
  10.  
    //分组的个数有:2
  11.  
    //第0个分组为:728-4765164
  12.  
    //第1个分组为:728
  13.  
    //第2个分组为:4765164
  14.  
     
  15.  
    //分组的个数有:2
  16.  
    //第0个分组为:520-7758258
  17.  
    //第1个分组为:520
  18.  
    //第2个分组为:7758258
学新通

2.3 start( )和end( )

  1.  
    Pattern pattern = Pattern.compile("[a-z] ");
  2.  
    Matcher matcher = pattern.matcher("123abc456def789");
  3.  
    while (matcher.find()) {
  4.  
    System.out.println("匹配子串" matcher.group() "开始于" matcher.start() "结束于" matcher.end());
  5.  
    //匹配子串abc开始于3结束于6
  6.  
    //匹配子串def开始于9结束于12
  7.  
    }

 2.4 replaceFirst( )和replaceAll( )

  1.  
    Pattern pattern = Pattern.compile("\\d ");
  2.  
    Matcher matcher = pattern.matcher("12ab33db56cf");
  3.  
    matcher.replaceFirst("换"); //换ab33db56cf
  4.  
    matcher.replaceAll("换"); //换ab换db换cf

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbffab
系列文章
更多 icon
同类精品
更多 icon
继续加载