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

所属分类: 网络编程 / 正则表达式 阅读数: 308
收藏 0 赞 0 分享

前言

同事把一个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方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

更多精彩内容其他人还在看

js中过滤特殊字符的正则表达式

js中用正则表达式 过滤特殊字符 ,校验所有输入域是否含有特殊符号
收藏 0 赞 0 分享

简单的用js实现过滤多余字符的正则表达式

利用正则表达法除去字符串中的重复字符,一个简单的JavaScript正则表达式实例,将一串含有重复字符串中的多余字符滤除掉,请运行查看效果。
收藏 0 赞 0 分享

校验普通电话、传真号码的正则表达式(可以+开头,除数字外,可含有-)

校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”
收藏 0 赞 0 分享

正则表达式匹配中文与双字节的代码

匹配中文字符与匹配双字节字符的代码,需要的朋友可以参考下。
收藏 0 赞 0 分享

精通JS正则表达式(推荐)

精通JS正则表达式,讲的比较详细,学习正则表达式的朋友可以参考下。
收藏 0 赞 0 分享

用Java正则去掉字符串中重复出现的字符

abcde 顺序可以不一样,也就是去掉重复出现的字符
收藏 0 赞 0 分享

JavaScript常用的正则表达式表单验证代码

验证表单的不同内容用的是不同的正则表达式。客户端验证常用的几个。
收藏 0 赞 0 分享

JavaScript RegExp 正则表达式对象详细说明

RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。
收藏 0 赞 0 分享

一个正则表达式的看法(?:)

下午和kindle聊天的时候,他让我看一个正则,问我知不知道其中?:的作用,以偶半瓶水的正则功力,不知道杂解释给他听了,单个一个还好理解,一起就不明白了,起码我是没用过..查了下资料,说说我的看法..
收藏 0 赞 0 分享

用于过滤空白字符的几种常见的js正则表达式pattern

用于过滤空白字符的几种常见的正则表达式pattern——在JavaScript中的表现形式
收藏 0 赞 0 分享
查看更多