Нужна помощь с Regex для извлечения почтового индекса из строки - PullRequest
2 голосов
/ 26 августа 2009

Мне нужно извлечь почтовый индекс из строки. Строка выглядит так:

Sandviksveien 184, 1300 Sandvika

Как я могу использовать регулярные выражения для извлечения почтового индекса? В приведенной выше строке почтовый индекс будет 1300.

Я пробовал что-то по дороге, как это:

Regex pattern = new Regex(", [0..9]{4} ");
string str = "Sandviksveien 184, 1300 Sandvika";
string[] substring = pattern.Split(str);
lblMigrate.Text = substring[1].ToString();

Но это не работает.

Ответы [ 3 ]

6 голосов
/ 26 августа 2009

Это должно сработать:

,\s(\d{4})

А вот краткий пример того, как его использовать:

using System;
using System.Text.RegularExpressions;

class Test
{
    static void Main()
    {
        String input = "Sandviksveien 184, 1300 Sandvika";

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

        Match match = regex.Match(input);

        if (match.Success)
            Console.WriteLine(match.Groups[1].Value);
    }
}
2 голосов
/ 26 августа 2009

Я думаю, вы ищете Группировка , которую вы можете сделать с RegExes ...

Для примера ...

Regex.Match(input, ", (?<zipcode>[0..9]{4}) ").Groups["zipcode"].Value;

Возможно, вам придется немного изменить это, так как я ухожу из памяти ...

1 голос
/ 26 августа 2009

Попробуйте это:

var strs = new List<string> { 
"ffsf 324, 3480 hello",
"abcd 123, 1234 hello",
"abcd 124, 1235 hello",
"abcd 125, 1235 hello"
};

Regex r = new Regex(@",\s\d{4}");

foreach (var item in strs)
{
    var m = r.Match(item);
    if (m.Success)
    {
       Console.WriteLine("Found: {0} in string {1}", m.Value.Substring(2), item);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...