快递 地址 自动识别 地址 省市区 、手机号、姓名, 地址 自动补全 省市区 - java 算法 一、 地址 分词 将 地址 字符串中的 省市区 县、街道、道路、小区、楼栋、单元、户室的等地理要素 解析 出来。 二、自定义词库加载 让程序使用自己标准 地址 词库可以在初始化时加载自定义词库。 三、构建中文标准 地址 库 为了节省人工构建标准 地址 库的成本,可以对低质量的 地址 分析、修正和建库,提高标准 地址 质量。 四、普通 地址 关联标准 地址 算法 同一个 地址 会有多种不同的书写方法,将各种不同的写法统一到一条标准 地址 中。 五、快递 地址 自动 解析 省市区 县以及名称电话和邮编等 自动化识别文本中的 地址 、人名、电话、邮编等。 六、自动补充行政区划

Java 利用正则表达式完美解析全国省市区地址

一、问题场景描述

最近在项目中遇到了一个全国地址解析的一个场景,前端会传来一个字符串,后端需自动解析出 xx省xx市xx区+详细地址 的这种格式。

因为我们的数据来源于其他系统,客户地址在其他系统可能是随便填的,并不是正确的,所以前端也做了支持更改地址的操作。所以,我们的地址解析方式也是根据前端的地址格式来进行解析的。

二、解决方案

我也是第一次遇到这个场景,于是首先百度了一手,得到的解决方案有:

  • 根据正则表达式进行解析;
  • https://blog.csdn.net/superSubfn/article/details/80290491
  • https://blog.csdn.net/weixin_44590872/article/details/108470804
  • 字符串匹配遍历的方式;
  • https://juejin.cn/post/6969820144927244324
  • https://blog.csdn.net/renfng/article/details/94738164
  • tips: 还有其他的解决方案,已经找不到网址了,就不贴了

    根据我们的这个业务需求,用正则是比较方便的,因为我们前端会有地址的固定格式,比如:江苏省南京市雨花台区某某地址,对于这段字符串,只要成功匹配出省、市、区就可以完成地址的解析。

    三、开发过程中遇到的问题

    我一开始是直接用了百度的正则,这个正则表达式,可以解析出正常的省市区地址,但是对于北京市这种直辖市和香港行政区这些地方没有做很好的匹配。于是,根据前端的地址选项做出了正则的更改。

    前端的地址选项格式:

    前端对于北京上海这类直辖市,的格式:北京市北京市西城区xx地址

    // 百度到的正则
    String regex="(?<province>[^省]+自治区|.*?省|.*?行政区|.*?市)(?<city>[^市]+自治州|.*?地区|.*?行政单位|.+盟|市辖区|.*?市|.*?县)(?<county>[^县]+县|.+区|.+市|.+旗|.+海域|.+岛)?(?<town>[^区]+区|.+镇)?(?<village>.*)";
    // 修改后的正则
    String regex = "(?<province>[^省]+省|.+自治区|[^澳门]+澳门|[^香港]+香港|[^市]+市)?(?<city>[^自治州]+自治州|[^特别行政区]+特别行政区|[^市]+市|.*?地区|.*?行政单位|.+盟|市辖区|[^县]+县)(?<county>[^县]+县|[^市]+市|[^镇]+镇|[^区]+区|[^乡]+乡|.+场|.+旗|.+海域|.+岛)?(?<address>.*)";
    

    四、应用代码

    1、地址封装类

    @Data
    @NoArgsConstructor
    public class WSSsdrAddress implements Serializable {
        private String province;
        private String city;
        private String county;
        private String address;
        public WSSsdrAddress(String province, String city
    文本地址智能识别组件(一) 最近工作中遇到一个需求,各快递公司的官网在线寄件中都有地址识别的组件,输入姓名,电话,地址识别省市区加详细地址的方式,网上收集的解决方案是通过正则表达式匹配出省市区关键字,但是这种方式对于特殊的地址不够灵活,且兼容性不高.现在需要研发一个高可用的识别接口,该如何做到? 首先百度找了一下灵感,网上现有的方式是通过正则表达式匹配省市区关键字,如下: * 解析地址

    Java系列》后端应用开发记录

    单词边界,具体就是\w和\W之间的位置,也包括\w和^之间的位置,也包括\w和$之间位置。字符匹配任何单个字符,只能出现在方括号外,不能匹配换行符(\n)可以匹配到123-4567890,1234-5678901。在[]内代表取反,在[]外代表字符串开始。表示重复区间,非贪婪模式优先匹配m,例如。可选字符,正则表达式期望出现零次或一次。等价于{1,} 即1到无数个。等价于{0,} 即0到无数个。可以匹配123456789。空格 table 换行。n表示重复次数,例如。贪婪模式,优先匹配n。

    https://blog.datasource.space

    java地址串中解析提取省市区-完美匹配中国所有地址

    前段时间项目中要解析android定位传的一个地址串 分别存入 省 市 区 字段,网上找的 写正则 的方法大都只能解析 xx省xx市xx区 这样的大众化地址,而对于一些命名比较特别的地址(比如:西藏自治区日喀则地区日喀则市 / 海南省省直辖县级行政单位中沙群岛的岛礁及其海域)就会出问题,我就将正则式进行了修改完善。废话不多说 直接上代码:package com.jt.util; import j...

    superSubfn

    cn-province-city:获取和格式化中国省市

    cn-province-city Geting and formatting chinese provinces and cities 小模块,用来获取中国的省和市 Installation npm install cn-province-city Usage var china = require('cn-province-city'); Config add two script into your project's package.json: 在你的当前项目的package.json文件中加入两条脚本命令 "scripts": { "save":"node node_modules/cn-province-city/index.js -s", "help":"node node_modules/cn-province-city/index.js -h" run s

    Java 利用正则表达式完美解析全国省市区地址展开

    本文介绍了使用Java正则表达式解析全国省市区地址的方法。首先定义了一个匹配中文地址格式的正则表达式,包含"省"、"市"、"区"、"街道"等可选层级。然后通过Java的Pattern和Matcher类进行匹配,提取各层级信息并去除后缀。该方法灵活处理不同格式的地址,对缺失层级自动填充"未知"。通过调整正则表达式可以适应更精确或宽松的地址格式要求。

    chuyouyinghe的专栏

    java 身份证地址提取籍贯_java地址串中解析提取省市区-完美匹配中国所有地址|自动解析地址...

    前段时间项目中要解析android定位传的一个地址串 分别存入 省 市 区 字段,网上找的 写正则 的方法大都只能解析 xx省xx市xx区 这样的大众化地址,而对于一些命名比较特别的地址(比如:西藏自治区日喀则地区日喀则市 / 海南省省直辖县级行政单位中沙群岛的岛礁及其海域)就会出问题,我就将正则式进行了修改完善。废话不多说 直接上代码:package com.jt.util;import jav...

    weixin_39517797的博客

    java 提取省市区_java地址串中解析提取省市区-完美匹配中国所有地址|自动解析地址...

    前段时间项目中要解析android定位传的一个地址串 分别存入 省 市 区 字段,网上找的 写正则 的方法大都只能解析 xx省xx市xx区 这样的大众化地址,而对于一些命名比较特别的地址(比如:西藏自治区日喀则地区日喀则市 / 海南省省直辖县级行政单位中沙群岛的岛礁及其海域)就会出问题,我就将正则式进行了修改完善。废话不多说 直接上代码:package com.jt.util;import jav...

    weixin_36378832的博客

    Java地址智能解析终极指南:3分钟从混乱文本到结构化数据

    在电商物流、CRM系统、订单管理等应用中,**Java智能地址解析**是处理用户输入混乱地址信息的终极解决方案。address-parse作为一个专业的Java地址解析库,能够将各种格式的地址文本精准转换为结构化的省市区信息,极大提升了数据处理效率和质量。 ## 🎯 为什么需要智能地址解析? 传统地址处理面临诸多挑战:用户输入格式千奇百怪、信息混杂不清、行政区划简称不统一。手动编写正则表达式

    gitblog_01182的博客 public static List<Map<String,String>> addressResolution(String address){ * java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和Matcher Pattern OhhZoey的博客
    前段时间项目中要解析android定位传的一个地址串 分别存入 省 市 区 字段,网上找的 写正则 的方法大都只能解析 xx省xx市xx区 这样的大众化地址,而对于一些命名比较特别的地址(比如:西藏自治区日喀则地区日喀则市 / 海南省省直辖县级行政单位中沙群岛的岛礁及其海域)就会出问题,我就将正则式进行了修改完善。废话不多说 直接上代码:package com.jt.util; import j...
    var china = require('cn-province-city'); Config add two script into your project's package.json: 在你的当前项目的package.json文件中加入两条脚本命令 "scripts": { "save":"node node_modules/cn-province-city/index.js -s", "help":"node node_modules/cn-province-city/index.js -h" run s
    在电商物流、CRM系统、订单管理等应用中,**Java智能地址解析**是处理用户输入混乱地址信息的终极解决方案。address-parse作为一个专业的Java地址解析库,能够将各种格式的地址文本精准转换为结构化的省市区信息,极大提升了数据处理效率和质量。 ## 🎯 为什么需要智能地址解析? 传统地址处理面临诸多挑战:用户输入格式千奇百怪、信息混杂不清、行政区划简称不统一。手动编写正则表达式
    public static List<Map<String,String>> addressResolution(String address){ * java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和Matcher Pattern