从地址字符串中解析出省市名

本文介绍了一种从地址字符串中解析提取省、市、区等信息的实用工具类,通过正则表达式匹配,能够准确地解析出地址的各个组成部分,特别适用于处理复杂的中国地址数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上找的一些方法当我输入上海市的地名就解析出错,下面这个可以正常解析,今天想起来标记一下。

package lly.test;


import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

    /**
     * @author 伍磊
     *
     *  从地址串中解析提取省市区
     */
    public class AddressResolutionUtil {

        public static Map<String,String> addressResolution(String address){
            String regex = "(?<province>[^省]+自治区|.*?省|.*?行政区|.*?市)?(?<city>[^市]+自治州|.*?地区|.*?行政单位|.+盟|市辖区|.*?市|.*?县)(?<district>[^县]+县|.+区|.+市|.+旗|.+海域|.+岛)?(?<town>[^区]+区|.+镇)?(?<village>.*)";
            Matcher m = Pattern.compile(regex).matcher(address);
            String province, city, district, town, village;
            Map<String, String> map = new HashMap<>(16);
            while (m.find()) {
                province = m.group("province");
                map.put("province", province == null ? "" : province.trim());
                city = m.group("city");
                map.put("city", city == null ? "" : city.trim());
                district = m.group("district");
                map.put("district", district == null ? "" : district.trim());
                town = m.group("town");
                map.put("town", town == null ? "" : town.trim());
                village = m.group("village");
                map.put("village", village == null ? "" : village.trim());
            }
            return map;
        }

        public static void main(String[] args) {
            System.out.println(addressResolution("上海市黄浦区"));
        }
    }


在这里插入图片描述
转载出处:https://www.jianshu.com/p/8a86a338ef5b

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值