正则表达式 划分省市区(直辖市和附详细地址包括市,区) | 您所在的位置:网站首页 › 提取省市县 › 正则表达式 划分省市区(直辖市和附详细地址包括市,区) |
目前有需求是将省市区从详细地址中提取出来。这里选择用正则表达式,语言使用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 实验室设备网 版权所有 |