无法从doc文件中提取(US)Zipcode

时间:2016-06-16 09:52:30

标签: asp.net doc zipcode

我需要从Resume.doc文件中获取Zipcode。 但没有成功,,,

它使用静态字符串,我的意思是验证静态字符串但无法从doc文件中解析zipcode,

我正在分享我的代码......

   protected void zipcodeGetter()
    {
        var path = "C:\\Users\\Jatinder\\Desktop\\LUCENE\\Resume\\Jeffrey.doc";
        Document doc = new Document();
        string html = File.ReadAllText(path);

        using (StreamReader sr = new StreamReader(path, System.Text.Encoding.Default))
        {
            html = sr.ReadToEnd();
        }

        const string MatchPhondePattern = @"^\d{5}(?:[-\s]\d{4})?$";
        Regex rx = new Regex(MatchPhondePattern, RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace);
        MatchCollection matches = rx.Matches(html);
        // Report the number of matches found.
        int noOfMatches = matches.Count;
        //Do something with the matches
        foreach (Match match in matches)
        {
            //Do something with the matches
            string tempPhoneNumber = match.Value.ToString(); ;

        }
    }

任何人都可以帮助我吗

1 个答案:

答案 0 :(得分:0)

您的代码只是不能使用该正则表达式。

此问题很复杂,您最好的选择是使用来自执行此操作的公司的服务。他们将拥有一个强大的系统。

以下是an article on regex and addresses的引用:

  

我们从程序员那里得到很多关于解析地址的问题。我们看到很多人试图将正则表达式用于街道地址,作为地址用户体验专家,每当另一个程序员成为这个陷阱的牺牲品时,我们就会感到畏缩。我们希望这些信息能为您省去一些麻烦,如果您的搜索无效,请随时向我们提出您对地址的任何疑问。 ...

  你应该使用正则表达式来解析街道地址吗?简短的回答是,"可能不是。"由于地址内容和格式的差异很大,地址不是常规的 -​​ 使用正则表达式处理信息时不可或缺的因素。

现在,关于你的正则表达式的一些注释和提示。

我使用RegExr来制作你使用过的example of the regular expression。如您所见,没有突出显示的区域,这意味着您的正则表达式无法正常工作。

如果您只想匹配五个连续数字,则正则表达式为:[0-9]{5}。这是an example

您不能仅使用^$,因为例如邮政编码之前或之后可能有空格或句点^和{{代码中的1}}意味着您正在寻找行的开头和结尾。

然而,没有任何其他限定符的问题是你也会匹配长数字。换句话说,使用类似$的字符串,您将匹配1234567890,因为该字符串中有五个连续的数字。

在比赛之前或之后,使用可能的标点符号或空格限定正则表达式是很困难的,因为如果比赛是在线的开头或结尾怎么办?它will miss some

这是一个可能对您有用的正则表达式。它似乎适用于很多情况。你可以看到example here,有更多解释。

[0-9]{5}

(完全披露:我为SmartyStreets工作,我们有an API这样做。如果您有兴趣,请查看API docs。)