正则表达式 划分省市区(直辖市和附详细地址包括市,区) 您所在的位置:网站首页 提取省市县 正则表达式 划分省市区(直辖市和附详细地址包括市,区)

正则表达式 划分省市区(直辖市和附详细地址包括市,区)

2024-07-07 00:37| 来源: 网络整理| 查看: 265

目前有需求是将省市区从详细地址中提取出来。这里选择用正则表达式,语言使用C#。

查阅一般用于区分省市区的正则表达式,编写如下代码:

using System; using System.Text.RegularExpressions; class Demo { static void Main() { string str = "内蒙古自治区巴彦淖尔市临河区新华东街三河小区康家电维修部"; str = str.Replace(" ", ""); String regex = "(?[^省]+省|.+自治区)(?[^自治州]+自治州|[^市]+市|[^盟]+盟|[^地区]+地区|.+区划)(?[^市]+市|[^县]+县|[^旗]+旗|.+区)?(?[^区]+区|.+镇)?(?.*)"; string[] res = Regex.Split(str, regex); foreach (string word in res) { Console.WriteLine(word); } } }

要么不能区分出直辖市,要么当详细地址中包括小区,或者市的字段时,会有如下情况出现:

 使用 string str = "浙江省台州市温岭市新华东街三河小区康家电维修部";时出现如下情况:

提供解决方案为,划分到区县一级(county)时,正则表达式的匹配规则改为同时匹配(区|市|县|旗|岛|海域),按第一次出现的区|市|县|旗|岛|海域)值进行划分。 

using System; using System.Text.RegularExpressions; class Demo { static void Main() { string str = "浙江省台州市温岭市新华东街三河小区康家电维修部"; str = str.Replace(" ", ""); string regex = "(?[^省]+自治区|.*?省|.*?行政区|.*?市)?(?[^市]+自治州|.*?地区|.*?行政单位|.+盟|市辖区|.*?市|.*?县)?(?[^(区|市|县|旗|岛)]+区|.*?市|.*?县|.*?旗|.*?岛)?(?.*)"; string[] res = Regex.Split(str, regex); foreach (string word in res) { Console.WriteLine(word); } } }

结果符合要求  

 使用 string str = "内蒙古自治区巴彦淖尔市临河区新华东街三河小区康家电维修部";



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有