JAVA 使用正则表达式提取想要的内容

有时候我们想从一段文字中提取想要的内容,如省市区地址中提取出省市,从股票的数据中提取出关键的价格信息,抓取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);
}

执行代码后控制台输出如下结果:
<pre>
省:福建省
市:厦门市
</pre>
这里需要注意的是中文的正则范围为:[u4e00-u9fa5],并且正则提取内容以()分组,即([\\u4e00-\\u9fa5]+省)为提取省份的组,([\\u4e00-\\u9fa5]+市)为提取城市的组,提取数据时下标是从组所在的位置开始,即从1开始而不是从0开始,这点需要注意。

用下标来提取数据有时候显得不那么好看

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值