【问题标题】:Unable to extract (US) Zipcode from doc file无法从 doc 文件中提取(美国)邮政编码
【发布时间】:2016-06-16 09:52:30
【问题描述】:

我需要从 Resume.doc 文件中获取邮政编码。 但没有成功,,,

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

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

   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(); ;

        }
    }

谁能帮我解决这个问题

【问题讨论】:

    标签: asp.net doc zipcode


    【解决方案1】:

    您的代码无法使用该正则表达式。

    这个问题很复杂,您最好的选择是使用提供此服务的公司的服务。他们将拥有一个强大的系统。

    这是来自an article on regex and addresses的引用:

    我们从程序员那里收到了很多关于解析地址的问题。我们看到很多人试图对街道地址使用正则表达式,作为地址用户体验专家,每当另一个程序员落入这个陷阱时,我们都会畏缩不前。我们希望这些信息能为您省去一些麻烦,如果您的搜索是徒劳的,请随时向我们询问有关地址的任何问题。 ...

    您应该使用正则表达式来解析街道地址吗?简短的回答是,“可能不会。”由于地址内容和格式存在很大差异,地址不是“常规的”——这是使用正则表达式处理信息不可或缺的因素。


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

    我使用 RegExr 制作了您使用的 example of the regular expression。如您所见,没有突出显示的区域,这意味着您的正则表达式将不起作用。

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

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

    但是,没有任何其他限定符的问题是您也会匹配长数字。换句话说,对于像1234567890 这样的字符串,您将匹配[0-9]{5},因为该字符串中有五个连续的数字。

    很难在匹配之前或之后用可能的标点符号或空格来限定正则表达式,因为如果匹配位于行首或行尾怎么办?它will miss some

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

    (?<=\W|^)\d{5}(-?\d{4})?(?=\W|$)

    (完全披露:我在 SmartyStreets 工作,我们有 an API 可以做到这一点。如果您有兴趣,请查看 API docs。)

    【讨论】:

      猜你喜欢
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      相关资源
      最近更新 更多