gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章详解正则表达式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. 代码如下 :
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的! 。

原文链接:https://www.cnblogs.com/Krloypower/p/11356805.html 。

最后此篇关于详解正则表达式Matcher类中group方法的文章就讲到这里了,如果你想了解更多关于详解正则表达式Matcher类中group方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com