前言

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

Pattern 和 Matcher

java.util.regex 包下

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

正则表达式语法

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

上代码

现在我的正则表达式为 (//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
|||||||
  1. group(0) 对应着 ((//d+)([a-z]+)(//d+)) 123ra9040
  2. group(2) 输出的数据 是 group(0)中所匹配的数据 也就是([a-z]+) 匹配到是数据 ra
  3. group(3) 输出的数据 是 group(0)中所匹配的数据 也就是(//d+) 匹配到是数据 9040

总结

  1. Matcher 类中group(0) 表示正则表达式中符合条件的字符串。
  2. Matcher 类中 group(1) 表示正则表达式中符合条件的字符串中的第一个() 中的字符串。
  3. Matcher 类中 group(2) 表示正则表达式中符合条件的字符串中的第二个() 中的字符串。
  4. Matcher 类中 group(3) 表示正则表达式中符合条件的字符串中的第三个() 中的字符串。
  5. 如果不明白,我相信看代码会很明白的。

最新文章

  1. 基于WebGL 的3D呈现A* Search Algorithm
  2. express 框架之 路由与中间件
  3. dell新服务器安装系统
  4. [LoadRunner]性能测试实践_Hessian协议脚本编写
  5. Linux系统编程@进程通信(一)
  6. 在xml中添加array
  7. c++11 内存模型解读
  8. php 正则中文匹配
  9. Duilib介绍以及各个类的简介
  10. NPOI导出多表头Execl(通过html表格遍历表头)
  11. Missra开源前端框架
  12. PAT---1050. String Subtraction (20)
  13. 【好程序员笔记分享】——URL解码与编码
  14. Mac编程(QT有许多专门的资料)
  15. IOS 跳转到系统的url
  16. 抛开rails使用ActiveRecord连接数据库
  17. Shell命令-文件及目录操作之ls、cd
  18. Java代码实现文件添加数字签名、验证数字签名
  19. Ubuntu下matplotlib的中文显示
  20. Trie树的数组实现原理

热门文章

  1. C++学习书籍推荐《More Exceptional C++》下载
  2. Mac上Ultra Edit的激活
  3. python笔记(1)--序列(列表 元组 range)
  4. LINUX安装源码软件经典三部曲
  5. python介绍、安装及相关语法、python运维、编译与解释
  6. C#3.0新增功能10 表达式树 02 说明
  7. [leetcode] 17. Letter Combinations of a Phone Number (medium)
  8. [sublime3] 在linux下的终端中使用sublime3打开文件
  9. [02] HEVD 内核漏洞之栈溢出
  10. Java学习笔记之---Servlet