什么是正则表达式

正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符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> resultMap = new HashMap>();

for (int i = 0; i < 10; i++) {

resultMap.put("13" + i, new ArrayList());

}

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 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利用正则表达式提取数据的方法相关推荐

  1. java正则获取数字_Java通过正则表达式获取字符串中数字的方法示例

    前言 本文通过一个小范例来学习java中通过正则表达式如何获得一个字符串中的数字,下面话不多说,来看看详细的介绍吧. 示例代码如下: import java.util.regex.Matcher; i ...

  2. python正则匹配特殊字符_python 利用正则表达式提取特殊信息

    1.删除字符串中的 Python注释 案例: import re time = "2020-01-01 # 这是一个日期" num = re.sub(r'#.*$', " ...

  3. java 特殊符号正则_java利用正则表达式处理特殊字符的方法实例

    前言 一串字符串中有特殊符号,可能会影响到相关接口业务,所以需要把字符串中的特殊字符都过滤掉 百度上面搜索大部分处理方法是通过正则表达式, 他需要处理的特殊符号都写进正则表达式中去校验, 这种方式一眼 ...

  4. java 正则 标签内容_java正则匹配html片段,并取得标签中的内容

    最近java群好友发来一个html代码,要帮忙匹配查找html代码里面特定的内容: 代码如下: 年代:2013年 朝向:东北 楼层:第10层(共33层) 结构:平层 装修:毛坯 住宅类别:普通住宅 建 ...

  5. java如何获取手机号码_java中如何提取一个字符串中的电话号码?

    展开全部 java中如何提取一个字符串中的电话号码e68a84e8a2ad3231313335323631343130323136353331333363376466,先写出手机号码和固定号码的正则表 ...

  6. java pdf替换内容_Java添加、提取、替换和删除PDF图片

    (一)简介 PDF在大多操作平台都能以高质量被使用,非常适合将有用的信息存档和分享.接下来这篇文章将介绍通过Java添加.提取.删除和替换PDF文档中的图片.文章大概结构如下: 添加图片到PDF 提取 ...

  7. java 正则 不包含_java使用正则表达式匹配不包含某个规则的字符串

    测试数据: 例如上面这几条简单的日志条目,我们想实现两个目标: 1.把8号的数据过滤掉: 2.把那些不包含robots.txt字符串的条目给找出来(只要Url中包含robots.txt的都给过滤掉). ...

  8. Java正则获取a标签href_正则表达式,同时获取a标签里的href,text 的值

    string pattern = @"]+href=\s*(?:'(?[^']+)'|""(?[^""]+)""|(?[^> ...

  9. java 正则 获取域名_java正则获取域名

    public static void main(String[] args) { try{ String url = "http://blog.csdn.net/xb12369"; ...

  10. java利用正则表达式提取字符串中的整数和小数部分

    最近开发遇到一个新的东西,就是前端传过来一个字符串,需要将里面的数字提取出来,倒腾了一天,最后还是没有倒腾出来,最后还是借鉴大佬的方法.记录一下. 首先是前端传来的字符串"小明通过扫码向你付 ...

最新文章

  1. LabVIEW读写各类格式图像的方法(基础篇—1)
  2. 张红忠:智慧化时代,如何通吃5G模组、AIoT?
  3. [NOIp提高组2017]宝藏
  4. GitHub发布重大更新,关系到所有程序员!
  5. 全国计算机等级考试题库二级C操作题100套(第63套)
  6. 解决: IDEA 代码 commit 后,Local Changes 中代码依旧在,提交失败,报错:is out of date
  7. linux同步数据库,Linux两台服务器mysql数据库同步
  8. C++类中的Static关键字
  9. SpringBoot实践 - SpringBoot+MySql+Redis
  10. 阿里开发规范_字字珠玑,高级技术专家带你了解阿里的开发流程规范
  11. vue父组件变量传递子组件_Vue2.x中的父组件数据传递至子组件
  12. Failed to start bean ‘documentationPluginsBootstrapper‘;
  13. php有意思的小程序,这应该是迄今为止最全的小程序Top 100 榜单了,php中文网诚意奉上...
  14. CATIA二次开发:工程图中文本的遍历和修改
  15. 财务报表OCR识别平台案例之安徽征信
  16. 棋牌游戏开发不可缺少的四大技术支持
  17. ndk开发(二)JNI、java互调
  18. PHP视频解析网站源码+后台
  19. 100+问说清放大器噪声那些事儿,超实用技巧
  20. CSS雪碧图demo(含雪碧代码)

热门文章

  1. 2011华为上机试题-Java
  2. 新申请了一个博客,这个博客主要用来记录编程学习笔记
  3. 模仿showModalDialog的总在最前
  4. 并发编程学习之Lock同步锁
  5. 配置IIS5.5/6.0 支持 Silverlight
  6. Nginx笔记(一):安装
  7. “暗云Ⅲ”实为老病毒 360去年已查杀
  8. memcached命令
  9. Nginx一个server主机上80、433http、https共存
  10. python-pip : Depends: python-setuptools (= 0.6c1) 问题