目前有需求是将省市区从详细地址中提取出来。这里选择用正则表达式,语言使用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 = "内蒙古自治区巴彦淖尔市临河区新华东街三河小区康家电维修部";