从地址中提取邮政编码

Posted

技术标签:

【中文标题】从地址中提取邮政编码【英文标题】:extracting postal code from addresses 【发布时间】:2015-01-10 03:44:16 【问题描述】:

我正在寻找 C# 中信息的解决方案。

以下国家的邮政编码

Canada,US,Germany,UK,Turkey,France,Pakistan,India,Italy.

地址可以是这样的

188 pleasant street, new minas, Nova Scotia b2p 6r6, Canada.

或 109 A, block 3, DHA, Karachi 75600, Pakistan。

我想要什么:我想提取与城市或国家名称相邻的任何字母数字。但是很难为其创建正则表达式

【问题讨论】:

如果您显示到目前为止的代码、输入是什么、您期望的输出是什么以及出了什么问题,人们会更容易帮助您。 与论坛网站不同,我们不使用“谢谢”、“任何帮助表示赞赏”或Stack Overflow 上的签名。请参阅“Should 'Hi', 'thanks,' taglines, and salutations be removed from posts?. 这听起来很有价值。在我看来,有人可能已经写了这个,然后卖掉了。他们甚至可能有技术支持。当有人已经做得比你做得更好时,你为什么还要自己做呢? @salniro 是的。我有想法。我想提取与城市或国家名称相邻的任何字母数字。但是很难为其创建正则表达式 这篇文章可能对你有所帮助***.com/questions/1335293/… 【参考方案1】:

这是一个相当开放的任务。您必须在其中遵循某些特定格式。因为如果地址中有两个数字字符串会发生什么(例如街道是数字的情况)。所以有两种可能:

地址始终采用特定格式,您知道实际格式 zip 始终具有给定的长度

在这两种情况下,正则表达式都会引导您找到解决方案。 - 对于第一个示例,假设邮政编码按给定顺序排列(假设在原始示例中为 '6r6'),您可以使用以下正则表达式模式:“(\S+)\, ?\w+$” - 对于第二种情况,假设邮政编码是 5 位以上的数字,位于第一个 ',' 之后,那么可以使用以下模式来提取它:“(,.*)+(\d5 )”。第二组将是比赛中的邮政编码。

这是您可以使用的代码: 公共静态字符串GetSingleMatch(字符串地址,字符串模式,int group = 0) return new Regex(pattern, RegexOptions.IgnoreCase).Match(address).Groups[group].Value;

“group”可选参数表示将包含邮政编码的正则表达式组。

【讨论】:

【参考方案2】:

我认为您假设地址中的一般规则是合理的,即国家/地区是最后一个,城市或州在其之前,因此邮政编码可以放在城市或州和国家之间,正如您在示例中所说的“,”是用作分隔符,所以可以如下:

    private string GetPostCode(string address )
    
        string result = string.Empty;

        string[] list = address.Split(',');
        list.Reverse();
        foreach (var item in list)
        
            // if item contains numeric postcode 
            Regex re = new Regex(@"\d+");
            Match m = re.Match(item);
            result = m.Value;
            if (!string.IsNullOrEmpty(result))
                break;
        

        return result;
    

希望对你有所帮助。

【讨论】:

这不是答案。您可能应该告诉正则表达式模式或其他内容。 @KaushikKishore :代码已更新。但我仍然不写确切的代码,我只是想给出一个建议。感谢您的评论。

以上是关于从地址中提取邮政编码的主要内容,如果未能解决你的问题,请参考以下文章

邮政编码/地址查找器

从 Podio 中的 Google People JSON 对象中提取地址

从 sockaddr 结构中获取 IPV4 地址

从地址中如何提取或者识别街道?支持模糊地址

从地址中如何提取或者识别街道?支持模糊地址

从地址中如何提取或者识别街道?支持模糊地址