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


相关推荐: 如何快速上传建站程序避免常见错误?  高防服务器租用指南:配置选择与快速部署攻略  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  北京网站制作的公司有哪些,北京白云观官方网站?  网站页面设计需要考虑到这些问题  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何确保FTP站点访问权限与数据传输安全?  Windows Hello人脸识别突然无法使用  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  Laravel观察者模式如何使用_Laravel Model Observer配置  常州企业网站制作公司,全国继续教育网怎么登录?  如何获取免费开源的自助建站系统源码?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  如何用AWS免费套餐快速搭建高效网站?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  JS弹性运动实现方法分析  iOS验证手机号的正则表达式  简历没回改:利用AI润色让你的文字更专业  JavaScript如何实现继承_有哪些常用方法  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  如何为不同团队 ID 动态生成多个“认领值班”按钮  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  如何用西部建站助手快速创建专业网站?  如何快速选择适合个人网站的云服务器配置?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  Laravel如何处理异常和错误?(Handler示例)  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  如何快速上传自定义模板至建站之星?  黑客如何利用漏洞与弱口令入侵网站服务器?  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  如何在Windows服务器上快速搭建网站?  如何在服务器上配置二级域名建站?  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  如何快速搭建高效简练网站?  教你用AI润色文章,让你的文字表达更专业