正则地址匹配省市县乡/镇详细地址

public static void main(String[] args) {
    //String address = "浙江省温州市苍南县金乡镇苍南县 金乡阳美小区4栋";
    String address = "河南省周口市扶沟县搬口街fewfwf";

    String regex="((?<province>[^省]+^自治区|.*?自治区|.*?省|.*?行政区|.*?市)|上海|北京|天津|重庆)(?<city>上海城区|北京城区|天津城区|重庆城区|重庆郊县|[^市]+自治州|.*?自治县|.*?地区|.*?行政单位|.+盟|市辖区|香港岛|九龙半岛|新界|澳门半岛|海南州|屯昌县|临高县|定安县|澄迈县|神农架林区|路环岛|非堂区|氹仔|离岛|.*?市)(?<county>[^县]+县|.*?区|.*?市|.*?旗|.*?镇|.*?路氹城)";
    regex = regex+"?(?<town>[^乡镇]+乡镇|.*?街道|.*?社区|.*?办事处乡|.*?办事处|.*?管理处|.*?管委会|.*?苏木|.*?中心|.*?场|.*?区|.+镇|.+乡|.*?团|.*?业局|.*?工园|.*?业园|.*?管理局|.*?群岛|.*?委员会|.*?中心|.*?指挥部|.*?公司|.*?办公室|.*?江镜华侨|.*?梅西水库|.*?曹妃甸新城|.*?察北|.*?工业基地|.*?桐湖|.*?中法武汉生态示范城|.*?钢都花园|.*?太平川|.*?东宝新村|.*?科教新城|.*?滨江新城|.*?农业高新园|.*?建筑材料厂|.*?农科所|.*?阿荣旗林业和草原局|.*?门源监狱|.*?福海监狱|.*?新疆农业科学院玛纳斯县试验站)?(?<village>.*)";

    Matcher m= Pattern.compile(regex).matcher(address);
    String province=null,city=null,county=null,town=null,village=null;
    List<Map<String,String>> table=new ArrayList<Map<String,String>>();
    Map<String,String> row=null;
    while(m.find()){
        row=new LinkedHashMap<String,String>();
        province=m.group("province");
        row.put("provinceStr", province==null?null:province.trim());

        city=m.group("city");
        row.put("cityStr", city==null?null:city.trim());

        county=m.group("county");
        if(county==null){
            county=row.get("cityStr");
        }
        row.put("countyStr", county==null?null:county.trim());

        town=m.group("town");
        row.put("townStr", town == null ? null : town.trim());

        village=m.group("village");
        row.put("detail", village==null?"":village.trim());

    }

    if(row.get("townStr")==null){
        System.out.println("test");
    }

    System.out.println(row);

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值