Java利用正则表达式提取数据的方法

发布时间 - 2026-01-10 22:06:18    点击率:

什么是正则表达式

正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

Java利用正则表达式提取数据

Java正则表达式的用途很广,之前要用到将一大 3M 的 txt 文本切分成多个小文本,用 C# 写的话很简洁,代码也就二十几行,今天用 Java 写了一下,果然,Java 很罗嗦。

切分文件的代码就不贴了,主要贴一下怎么使用正则表达式将大字符串进行分组:

比如,现在有一个 endlist.txt 文本文件,内容如下:

1300102,北京市
1300103,北京市
1300104,北京市
1300105,北京市
1300106,北京市
1300107,北京市
1300108,北京市
1300109,北京市
1300110,北京市
1300111,北京市
1300112,北京市
1300113,北京市
1300114,北京市
1300115,北京市
1300116,北京市
1300117,北京市
1300118,北京市
1300119,北京市

七位数字代表手机号码的前七位,后面的汉字表示号码归属地。现在我要将这些内容按照 130 131 132...  开头分别写到 130.txt 131.txt 132.txt.....这些文件中。

public static void main(String args[]) {
  File file = null;
  BufferedReader br = null;
  StringBuffer buffer = null;
  String childPath = "src/endlist.txt";
  String data = "";
  try {
   file = new File(childPath);
   buffer = new StringBuffer();
   InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");
   br = new BufferedReader(isr);
   int s;
   while ((s = br.read()) != -1) {
    buffer.append((char) s);
   }
   data = buffer.toString();
  } catch (Exception e) {
   e.printStackTrace();
  }
  Map<String, ArrayList<String>> resultMap = new HashMap<String, ArrayList<String>>();
  for (int i = 0; i < 10; i++) {
   resultMap.put("13" + i, new ArrayList<String>());
  }
  Pattern pattern = Pattern.compile("(\\d{3})(\\d{4},[\u4e00-\u9fa5]*\\n)");
  Matcher matcher = pattern.matcher(data); 
  while (matcher.find()) {
   resultMap.get(matcher.group(1)).add(matcher.group(2));
  }
  for (int i = 0; i < 10; i++) {
   if (resultMap.get("13" + i).size() > 0) {
    try {
     File outFile = new File("src/13" + i + ".txt");
     FileOutputStream outputStream = new FileOutputStream(outFile);
     OutputStreamWriter writer = new OutputStreamWriter(outputStream, "utf-8");
     ArrayList<String> tempList = resultMap.get("13" + i);
     for (int j = 0; j < tempList.size(); j++) {
      writer.append(resultMap.get("13" + i).get(j));
     }
     writer.close();
     outputStream.close();
    } catch (Exception e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  }
 }

第24行使用正则表达式  "(\\d{3})(\\d{4},[\u4e00-\u9fa5]*\\n)" 每个()中的内容为一组,索引从 1 开始,0表示整个表达式。所以这个表达式分为两组,第一组表示3个数字,第二组表示 4个数字加多个汉字加一个换行符。提取时如26-28行所示。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


# java正则表达式  # 提取  # java正则表达式实例  # java正则表达式的使用  # Java正则表达式提取字符的方法实例  # java 字符串截取的三种方法(推荐)  # Java实现字符串匹配(基于正则)  # Java利用正则取标签之间的数据  # 北京市  # 正则表达式  # 切分  # 多个  # 七位  # 是一种  # 也就  # 就不  # 是由  # 二十  # 一大  # 要用  # 写了  # 作为一个  # 写到  # 所示  # 要将  # 这篇文章  # 罗嗦  # 两组 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 网页设计与网站制作内容,怎样注册网站?  什么是javascript作用域_全局和局部作用域有什么区别?  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  Laravel如何升级到最新版本?(升级指南和步骤)  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  打造顶配客厅影院,这份100寸电视推荐名单请查收  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  如何快速生成橙子建站落地页链接?  如何在IIS7上新建站点并设置安全权限?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  高防服务器如何保障网站安全无虞?  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  如何快速查询域名建站关键信息?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  Laravel怎么在Controller之外的地方验证数据  七夕网站制作视频,七夕大促活动怎么报名?  如何批量查询域名的建站时间记录?  如何快速上传建站程序避免常见错误?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  Laravel怎么为数据库表字段添加索引以优化查询  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  Laravel怎么在Blade中安全地输出原始HTML内容  如何快速搭建高效WAP手机网站吸引移动用户?  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  如何快速搭建高效可靠的建站解决方案?  如何基于PHP生成高效IDC网络公司建站源码?  如何挑选高效建站主机与优质域名?  进行网站优化必须要坚持的四大原则  独立制作一个网站多少钱,建立网站需要花多少钱?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  Python进程池调度策略_任务分发说明【指导】  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  香港服务器租用费用高吗?如何避免常见误区?  Laravel如何实现文件上传和存储?(本地与S3配置)  如何自定义建站之星模板颜色并下载新样式?  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  济南网站建设制作公司,室内设计网站一般都有哪些功能?  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  如何快速登录WAP自助建站平台?