有时候我们想从一段文字中提取想要的内容,如省市区地址中提取出省市,从股票的数据中提取出关键的价格信息,抓取HTML文件后提取内容等等这些场景,这时我们可以使用JAVA正则表达式帮助我们提取出想要的数据。

我们试着从地址中提取省市信息,示例文本如:福建省厦门市杏林区,我们在IDE中键入如下代码进行提取:

String address = "福建省厦门市杏林区";

Pattern ptn = Pattern.compile("([\\u4e00-\\u9fa5]+省)?([\\u4e00-\\u9fa5]+市)(.*)");

Matcher matcher = ptn.matcher(address);

if (matcher.matches()) {

String province = matcher.group(1);

String city = matcher.group(2);

System.out.println("省:" + province);

System.out.println("市:" + city);

}

执行代码后控制台输出如下结果:

省:福建省

市:厦门市

这里需要注意的是中文的正则范围为:[u4e00-u9fa5],并且正则提取内容以()分组,即([\\u4e00-\\u9fa5]+省)为提取省份的组,([\\u4e00-\\u9fa5]+市)为提取城市的组,提取数据时下标是从组所在的位置开始,即从1开始而不是从0开始,这点需要注意。

用下标来提取数据有时候显得不那么好看,如果要修改提取规则还得从头数有几个组,挺费劲的也容易出错,那么我们改一下代码:

String address = "福建省厦门市杏林区";

Pattern ptn = Pattern.compile("(?[\\u4e00-\\u9fa5]+省)?(?[\\u4e00-\\u9fa5]+市)(.*)");

Matcher matcher = ptn.matcher(address);

if (matcher.matches()) {

String province = matcher.group("province");

String city = matcher.group("city");

System.out.println("省:" + province);

System.out.println("市:" + city);

}

我们发现得到的效果是一样的,我们只是在提取数据的分组内给他取一个别名,如?取数时从下标换成别名,这是个很好的方法因为这样看起来会更加的友好维护起来也会方便很多。

java 正则提取$ 中内容_JAVA 使用正则从文字中提取想要的内容相关推荐

  1. java集合根据值排序_Java 8:对集合中的值进行排序

    java集合根据值排序 意识到Java 8将在接下来的几周内发布其GA版本之后,我认为现在是时候来看看它了,在过去的一周里,我一直在阅读Venkat Subramaniam的书 . 我要讲的是第3章, ...

  2. java中怎么让字体可以显示下划线呢_Java如何在数字文字中使用下划线?

    在代码中写一长串数字是一件很难读的东西.在JDK 7引入的新功能中,现在允许我们使用下划线字符来写数字文字,以打断数字以使其更易于阅读. 在以下示例中,您可以看到如何在数字文字中使用下划线.您会发现, ...

  3. java 数字 下划线_为什么要在Java SE 7的数字中使用下划线-在数字文字中使用下划线...

    java 数字 下划线 JDK 1.7发行版引入了几个有用的功能,尽管其中大多数都是语法糖,但使用该功能可以大大提高可读性和代码质量. 这样的功能之一是在数字文字中引入下划线 . 从Java 7开始, ...

  4. 为什么要在Java SE 7的数字中使用下划线-在数字文字中使用下划线

    JDK 1.7发行版引入了几个有用的功能,尽管其中大多数都是语法糖,但使用该功能可以大大提高可读性和代码质量. 这样的功能之一是在数字文字中引入下划线 . 从Java 7开始,您可以在Java源代码中 ...

  5. java如何找重复数字_Java如何找出数组中重复的数字

    题目描述:找出数组中重复的数字,具体内容如下 在一个长度为n的数组里的所有数字都在 0~n-1的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复了几次.请找出数组中任意 ...

  6. java创建目录时带权限_java – 无法在外部存储中创建目录,尽管权限显然设置正确...

    我有 在我的清单文件中,但是尝试创建一个目录时我失败了 Log.d(LOG_STRING, android.os.Environment.getExternalStorageState() ); ja ...

  7. java读取同包文件_Java实现从jar包中读取指定文件的方法

    本文实例讲述了Java实现从jar包中读取指定文件的方法.分享给大家供大家参考,具体如下: 以下的Java代码实现了从一个jar包中读取指定文件的功能: /** * This class implem ...

  8. Java设计模式应用到数据库_Java设计模式在数据库编程中的应用研究

    Java的广泛使用使得数据编程变得更加简单方便.本当中.当在加载父类的时候,再调用不同的子类,以避免代码文对Java进行了深入的探讨,提供了一种可行的应用Java的重复编写.templatemetho ...

  9. java try catch 输入字符串_java – 没有在try / catch中捕获NumberFormatException

    我正在创建一个.jsp页面的问题.对于那些担心的人来说,该网站是为了完成家庭作业,但是,我试图超越所需要的,并且不会要求任何与评分相关的内容.这完全是为了我自己的利益. 开展业务: 我从用户那里得到一 ...

最新文章

  1. DEAP:使用生理信号进行情绪分析的数据库(二、实验设计与主观分析)
  2. excel随机数_如何使用excel高效背GRE单词?
  3. 500只产品汪周末齐聚宇宙中心五道口,这里发生了什么?
  4. Python json使用实例:字符串与对象互转代码示例
  5. android搜索功能xml,Android_Android ActionBar搜索功能用法详解,本文实例讲述了Android ActionBar - phpStudy...
  6. 方便好用的接口协作工具
  7. vim 常用的快捷键
  8. 【开源】发卡程序/会员/分站/三级分销/对接易码/免签支付/完美运营
  9. 车牌识别matlab实现(蓝色车牌和新能源车牌)
  10. python实现Content-Type:application/octet-stream
  11. tieredImageNet 数据集介绍
  12. 大白话搞懂什么是同步/异步/阻塞/非阻塞
  13. 论文笔记:Show, Edit and Tell : A Framework for Editing Image Captions
  14. winform窗体控件
  15. HDU 1846-Brave Game(巴什博弈-SG函数)
  16. 微信小程序从后台拿数据并成功展示到前台——demo
  17. 计算机等级考试题和答案,全国计算机等级考试试题和答案..doc
  18. Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255]解决方法
  19. 15个小时彻底搞懂NLP自然语言处理(2021最新版附赠课件笔记资料)【LP自然语言处理涉及到深度学习和神经网络的介绍、 Pytorch、 RNN自然语言处理】 笔记
  20. linux下,批量复制文件名带空格的文件

热门文章

  1. 锚定比特币现金(BCH),助力构建价值互联网时代
  2. 压力测试即将开始,超前思维的128MB区块未必可行
  3. python中字符串的操作
  4. php 实例说明 socket通信机制
  5. 解决linux系统CentOS下调整home和根分区大小
  6. Understanding PWA
  7. Hadoop 4、Hadoop MapReduce的工作原理
  8. Java Eclipse解决中文字体太小
  9. 请你要幸福 这是 你唯一能为我做到的
  10. 东北面人李---精品作品展