定位地址匹配省市区(教你如何匹配你自己的数据库值)

import java.util.*;


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

public class AddressInfo {
        public static Map<String, String> addressResolution1(String address) {

            String regex = "(?<province>[^省]+^自治区|.*?自治区|.*?省|.*?行政区|.*?市)" ;
            String cityRegex = "(?<city>上海城区|北京城区|天津城区|重庆城区|重庆郊县|[^市]+自治州|.*?地区|.*?行政区划|.*?行政单位|.+盟|市辖区|.*?市|.*?县)";
            String countyRegex = "(?<county>某某1区|某某2区|[^区]+区)";
            //我们是有自己定义的省市区和对应的编码,所以不能使用固定的。我将
            //countyRegex = "(?<county>" + 数据库的区值 + "|[^区]+区)";处理的。
            String detailAddress = "?(?<detail>.*)";
            Matcher matcher = Pattern.compile(regex+cityRegex+countyRegex+detailAddress).matcher(address);
            String province, city, county,detail;
            Map<String, String> row  = new HashMap<>();
            while (matcher.find()) {
                province = matcher.group("province");
                row.put("province", province==null?null:province.trim());
                city = matcher.group("city");
                row.put("city", city==null?null:city.trim());
                county = matcher.group("county");
                row.put("county", county==null?null:county.trim());
                detail = matcher.group("detail");
                row.put("detail", detail==null?"":detail.trim());
            }
            return row;
        }

        public static void main(String[] args) {
            System.out.println(addressResolution1("湖北省武汉市洪山区"));
            System.out.println(addressResolution1("湖北省恩施土家族苗族自治州恩施市"));
            System.out.println(addressResolution1("重庆市县秀山土家族苗族自治县"));
            System.out.println(addressResolution1("海南省省直辖县级行政区划宜都市"));

        }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值