如何从地址中提取姓名和电话号码

时间:2013-07-03 05:27:40

标签: c# regex

我正在尝试将姓名,城市,州,邮编和电话与完整地址分开。我设法使用以下代码分隔zip。

 String input = richTextBox1.Text;

        Regex regex = new Regex(@"(\d{6})",
            RegexOptions.Compiled |
            RegexOptions.CultureInvariant);

        Match match = regex.Match(input);

        if (match.Success)
            textBox2.Text = match.Groups[1].Value;

没有。邮政编码中的数字不会改变,所以对我来说这很简单。但对于电话号码,没有。数字变化,有时候空间介于两者之间,如下例所示。我对如何提取这种类型的电话号码感到困惑。

我尝试使用以下代码获取电话号码,然后使用“.star \ s.star”提取名称但不起作用。

        Regex regex1 = new Regex(@"\b\d{3}\s\d{2}\s\d{6}",
            RegexOptions.Compiled | RegexOptions.CultureInvariant);

        Match match1 = regex1.Match(input);

        if (match1.Success)
            textBox3.Text = match1.Groups[1].Value;

        else
        {
            Regex regex2 = new Regex(@"\b\d{4}\s\d{3}\s\d{4}",
            RegexOptions.Compiled | RegexOptions.CultureInvariant);

            Match match2 = regex2.Match(input);

            if (match2.Success)
                textBox3.Text = match2.Groups[1].Value;
        }

示例地址:

H.
Mithras Developers
Tiruchendur Road, VM Chathiram PO, Radhapur, Tirunelveli, TN 628809 ‎
097 43 838122 ‎

EDIT ---

我终于找到了电话的答案。

 @"(\d{3}\ \d{2}\ \d{6})", @"(\d{4}\ \d{3}\ \d{4})"

请帮我提取城市和州。我目前正致力于提取名称。如果我自己找到答案,我会更新这篇文章。

EDIT ---

我找到了提取名字的方法。

@"^(.*)", selecting the first line of the address.

问题已经结束了。

2 个答案:

答案 0 :(得分:1)

试试这个...

    (\w+\s*\w+)\s+([\w\s]+),\s+([\w\s]+),\s+([\w\s]+),\s+([\w\s]+),\s*(\w{2}\s*\d+)\s*([\d\s]{9,13})

答案 1 :(得分:0)

提取名称的方法。

@"^(.*)", selecting the first line of the address.

提取手机的方法。

@"(\d{3}\ \d{2}\ \d{6})", @"(\d{4}\ \d{3}\ \d{4})"