正则表达式匹配提取省市区

简介: 本文主要介绍通过正则表达式匹配提取省市区,有完整的代码示例和详细的注释。

前言


本文主要介绍通过正则表达式匹配提取省市区,有完整的代码示例和详细的注释。


package com.importData;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * @author xiang.wei
 * @create 2018/3/1 16:44
 */
public class OriginTest {
    /**
     * 省
     */
    private static final String PROVINCE = "省";
    /**
     * 市
     */
    private static final String CITY = "市";
    /**
     * 区
     */
    private static final String REGION_1 = "区";
    /**
     * 县
     */
    private static final String REGION_2 = "县";
    public static void main(String[] args) {
//        XX省XX市XX区;XX省XX市XX市;XX省XX市XX县;XX市XX区;XX市XX县
//        1.浙江省杭州市滨江区
//        2.上海上海市金山区
//        3.浙江省台州市玉环县
//        4.湖北省潜江市潜江经济开发区
        String[] placeList = new String[]{"浙江省杭州市滨江区","上海上海市金山区","浙江省台州市玉环县","湖北省潜江市潜江经济开发区","湖北省潜江市江汉石油管理局","湖北省天门市马湾镇"};
        for (String place : placeList) {
            System.out.println(addressResolution(place));
        }
    }
    /**
     * 解析地址
     * @param address
     * @return
     */
    public static List<Map<String,String>> addressResolution(String address){
        String regex="((?<province>[^省]+省|.+自治区)|上海|北京|天津|重庆)(?<city>[^市]+市|.+自治州)(?<county>[^县]+县|.+区|.+镇|.+局)?(?<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("province", province==null?"":province.trim());
            city=m.group("city");
            row.put("city", city==null?"":city.trim());
            county=m.group("county");
            row.put("county", county==null?"":county.trim());
            town=m.group("town");
            row.put("town", town==null?"":town.trim());
            village=m.group("village");
            row.put("village", village==null?"":village.trim());
            table.add(row);
        }
        return table;
    }
}

测试结果:

9cb4c371267c03f96559626c072ceaa0_format,png.png


相关文章
|
7月前
通过正则表达式获取字符串中的省市区
通过正则表达式获取字符串中的省市区
243 0
通过正则表达式获取字符串中的省市区
Python 内置正则表达式库re的使用
正则表达式是记录文本规则的代码,用于查找和处理符合特定规则的字符串。在Python中,常通过原生字符串`r&#39;string&#39;`表示。使用`re.compile()`创建正则对象,便于多次使用。匹配字符串有`match()`(从开头匹配)、`search()`(搜索首个匹配)和`findall()`(找所有匹配)。替换字符串用`sub()`,分割字符串则用`split()`。
|
6月前
|
数据库 Python
Python网络数据抓取(8):正则表达式
Python网络数据抓取(8):正则表达式
57 2
|
6月前
|
自然语言处理 JavaScript 前端开发
Python高级语法与正则表达式(二)
正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
|
6月前
|
安全 算法 Python
Python高级语法与正则表达式(一)
Python提供了 with 语句的写法,既简单又安全。 文件操作的时候使用with语句可以自动调用关闭文件操作,即使出现异常也会自动关闭文件操作。
|
6月前
|
Python
Python使用正则表达式分割字符串
在Python中,你可以使用re模块的split()函数来根据正则表达式分割字符串。这个函数的工作原理类似于Python内置的str.split()方法,但它允许你使用正则表达式作为分隔符。
|
6月前
|
Python
Python中re模块的正则表达式
【6月更文挑战第2天】了解Python的re模块,它是处理正则表达式的核心工具。正则表达式用于在文本中查找特定模式。本文讨论了re模块的用法和技巧,包括导入模块、匹配、分组、替换文本、编译正则表达式以及使用预定义字符类、量词、锚点等高级功能。通过实例展示了如何在Python中执行这些操作,帮助提升文本处理能力。掌握这些技巧将使你更有效地利用正则表达式解决字符串处理问题。
59 2
|
6月前
|
Python
Python正则表达式详解:掌握文本匹配的魔法
Python正则表达式详解:掌握文本匹配的魔法
|
6月前
|
Python
python re 正则表达式库的使用
python re 正则表达式库的使用
44 0
|
7月前
|
数据安全/隐私保护 Python
Python进阶---正则表达式
Python进阶---正则表达式
29 2