C# 4.0 用于解析邮政地址的正则表达式?

C# 4.0 用于解析邮政地址的正则表达式?,c#-4.0,C# 4.0,你好,我是编程新手。我有以下格式的地址,我想把门牌号和街道号分开 house no.966 s# 70 Kashmir road Peshawar road Rawalpindi house no.970 st. # 43 Darian Kalar saeedan H# 110 Street No.35 Dhowk kala Rwp h# 124 Street No.73 G-11/3 ISB h no.423 St. No.23 Chan chirag Rawat H No.437

你好,我是编程新手。我有以下格式的地址,我想把门牌号和街道号分开

house no.966 s# 70  Kashmir road Peshawar road Rawalpindi
house no.970 st. # 43  Darian Kalar saeedan
H# 110 Street No.35  Dhowk kala Rwp
h# 124 Street No.73  G-11/3 ISB
h no.423 St. No.23  Chan chirag Rawat
H No.437 st. # 61  Chaklal scheme 3 RAWALPINDI

关于这方面有什么帮助建议吗?

看起来您只是按照两组数字出现的顺序查找它们,所以您可以这样做:

void Main()
{
    var addresses = new string[] { 
        "house no.966 s# 70  Kashmir road Peshawar road Rawalpindi",
        "house no.970 st. # 43  Darian Kalar saeedan",
        "H# 110 Street No.35  Dhowk kala Rwp",
        "h# 124 Street No.73  G-11/3 ISB",
        "h no.423 St. No.23  Chan chirag Rawat",
        "H No.437 st. # 61  Chaklal scheme 3 RAWALPINDI"
    };

    Regex houseAndStreet = new Regex(@"(\d+).+?(\d+)");

    foreach (string address in addresses)
    {
        Match match = houseAndStreet.Match(address);
        string house = match.Groups[1].Value;
        string street = match.Groups[2].Value;
        Console.WriteLine ("House = {0}, Street = {1}", house, street);
    }
}
您可能希望添加一些错误检查以使其更加健壮,但这是基本思想

正则表达式分解如下:

  • (\d+)
    组中的一个或多个数字
  • +?
    对任何其他字符的非贪婪搜索
  • (\d+)
    另一组中的一个或多个数字

根据我的理解,如果你是编程新手,你想像第966号那样分开,为什么你要投身于深层次(er)呢?从一开始就开始学习该语言。实际上,我需要从开始到街道编号的整个字符串。在这种情况下,您需要
匹配。组[0]
。但我原以为原始数据会更有用。