详解正则表达式Matcher类中group方法

 更新时间:2019年08月20日 11:33:41   作者:家里那只橘猫  
这篇文章主要介绍了正则表达式Matcher类中group方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

前言

同事把一个excel表给我,里面的数据大概有几千的样子吧。自己需要把里面的数据一个一个拿出来做一个http请求,对得到的结果进行过滤,然后再写到上面去。这是就涉及到用脚本来进行操作了,于是自己搞了一个Java的脚本出来,里面涉及到一些正则表达式,自己虽然说会,但是一直对 Matcher类中的group方法 不太了解。网上的博客也没有写的特别清楚,于是有了此文。

0|1Pattern 和 Matcher

在java.util.regex 包下

  1. Pattern(模式类) : 用来表达和陈述所要搜索模式的对象。Pattern.compile(pattern) pattern 也就是你写的正则表达式
  2. Matcher(匹配器类):真正影响搜索的对象。上面Pattern.compile(pattern)得到一个Pattern对象 为 r。 r.matcher(line) line也即是你需要进行匹配的字符串 。这样会得到一个 Matcher 的对象。
  3. PatternSyntaxException: 当遇到不合法的搜索模式时,会抛出例外。

0|1正则表达式语法

在有的语言中,一个反斜杠 \ 就足以具有转义的作用,但是Java中需要两个 \\ 反斜杠。表示转义的作用。一些字符在正则表达式中的说明,意义。详情可查看runoob

0|1上代码

现在我的正则表达式为 (//d+)([a-z]+)(//d+)

  1. //d+ 表示最少匹配一个数字
  2. [a-z]+ 表示最少匹配一个字符
  3. 需要指定的字符串为 "123ra9040 123123aj234 adf12322ad 222jsk22"
  4. 代码如下 :
public static void main( String args[] ){
    // 按指定模式在字符串查找
    String line = "123ra9040 123123aj234 adf12322ad 222jsk22";
    String pattern = "(\\d+)([a-z]+)(\\d+)";
//    String pattern1 = "([\\u4E00-\\u9FA5]+|\\w+)";
    // 创建 Pattern 对象
    Pattern r = Pattern.compile(pattern);
    // 现在创建 matcher 对象
    Matcher m = r.matcher(line);
    int i = 0;
    // m.find 是否找到正则表达式中符合条件的字符串
    while (m.find( )) {
      // 拿到上面匹配到的数据
      System.out.println("----i="+i);
      System.out.println("Found value: " + m.group(0) );
      System.out.println("Found value: " + m.group(1) );
      System.out.println("Found value: " + m.group(2) );
      System.out.println("Found value: " + m.group(3) );
      i++;
      System.out.println("|||||||");
      System.out.println("");
    }
  }

输出:

----i=0
Found value: 123ra9040
Found value: 123
Found value: ra
Found value: 9040
|||||||
----i=1
Found value: 123123aj234
Found value: 123123
Found value: aj
Found value: 234
|||||||
----i=2
Found value: 222jsk22
Found value: 222
Found value: jsk
Found value: 22
|||||||

group(0) 对应着 ((//d+)([a-z]+)(//d+)) 123ra9040

group(2) 输出的数据 是 group(0)中所匹配的数据 也就是([a-z]+) 匹配到是数据 ra

group(3) 输出的数据 是 group(0)中所匹配的数据 也就是(//d+) 匹配到是数据 9040

0|1总结

Matcher 类中group(0) 表示正则表达式中符合条件的字符串。

Matcher 类中 group(1) 表示正则表达式中符合条件的字符串中的第一个() 中的字符串。

Matcher 类中 group(2) 表示正则表达式中符合条件的字符串中的第二个() 中的字符串。

Matcher 类中 group(3) 表示正则表达式中符合条件的字符串中的第三个() 中的字符串。

如果不明白,我相信看代码会很明白的。

总结

以上所述是小编给大家介绍的正则表达式Matcher类中group方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

相关文章

  • 最实用的正则表达式整理

    最实用的正则表达式整理

    这篇文章主要介绍了最实用的正则表达式整理,比如校验邮箱的正则,号码相关,数字相关等等,本文给大家列举的比较多,需要的朋友可以参考下
    2022-10-10
  • 正则表达式简介及在C++11中的简单使用教程

    正则表达式简介及在C++11中的简单使用教程

    正则表达式(regular expression)是计算机科学中的一个概念,又称规则表达式,通常简写为regex、regexp、RE、regexps、regexes、regexen。接下来通过本文给大家介绍正则表达式简介及在C++11中的简单使用教程,一起通过本文学习吧
    2017-02-02
  • 常用正则表达式匹配代码介绍

    常用正则表达式匹配代码介绍

    这篇文章主要介绍了常用正则表达式匹配代码介绍方法的相关资料,需要的朋友可以参考下
    2016-07-07
  • 正则表达式{n,m}量词(至少n次,最多m次)

    正则表达式{n,m}量词(至少n次,最多m次)

    这篇文章主要介绍了正则表达式{n,m}量词,可以重复前面匹配的字符n-m次,至少n次,最多m次,需要的朋友可以参考下
    2016-12-12
  • 正则表达式在网页处理中的应用四则

    正则表达式在网页处理中的应用四则

    正则表达式(Regular Expression)为字符串模式匹配提供了一种高效、方便的方法。几乎所有高级语言都提供了对正则表达式的支持,或者提供了现成的代码库供调用。本文以ASP环境中常见的处理任务为例,介绍正则表达式的应用技巧。
    2008-04-04
  • 常用正则表达式知识点解读及判读有效数字、手机号邮箱正则表达式

    常用正则表达式知识点解读及判读有效数字、手机号邮箱正则表达式

    正则表达式式应用非常广泛,本文给大家收集整理些正则表达式知识点解读及判断有效数字、手机号邮箱正则表达式,对常用正则表达式相关知识感兴趣的朋友一起学习吧
    2015-11-11
  • ES9的新特性之正则表达式RegExp详解

    ES9的新特性之正则表达式RegExp详解

    这篇文章主要介绍了ES9的新特性之正则表达式RegExp详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 正则表达式详述 二

    正则表达式详述 二

    正则表达式详述 二...
    2007-04-04
  • ORACLE数据库中怎么求除数字、字母之外的非中文字符的正则表达式

    ORACLE数据库中怎么求除数字、字母之外的非中文字符的正则表达式

    最近使用oracle数据库做一个进销存项目,其中有一需求是:ORACLE数据库中求除数字、字母之外的非中文字符的正则表达式,当时还真是难住了,正则表达式好久没用了,后来通过上网搜了下相关资料,下面把具体具体解决方案分享给大家,以供那些需要的朋友参考
    2015-10-10
  • 匹配价格的正则表达式

    匹配价格的正则表达式

    网上找了一些关于价格的正则表达式,但是限定整数范围的貌似都没什么效果,今天把两个表达式拼了一下,拼成一个
    2009-11-11

最新评论