2

C# で住所パーサーを作成しています。住所があるとします:

Av. Rouxinol 101 - São Paulo - Brasil - CEP 04516-001 - Fone + 55 11 2151

文字列を個々の行に分割したいと思います。望ましい結果は次のとおりです。

  1. Av. Rouxinol 101
  2. São Paulo Brasil
  3. CEP 04516-001
  4. Fone + 55 11 2151

で割る-と 5 行になります。また、CEP (ブラジルの郵便番号) も分割されます。

だから、私が実装したいロジックは、すべての部分が少なくとも6文字の長さでなければならないということです。

これまでのところ、私は持っています:

(?<=.{6})-(?=.{6})
4

2 に答える 2

2
于 2012-08-19T00:19:41.777 に答える
0

正規表現を使用(?:^|(?<=\s-\s)).*?(?:(?=\s-\s[^-]{8,})|$)

using System;
using System.Text.RegularExpressions;

public class Test
{
  public static void Main()
  {
    string input = "Av. Rouxinol 101 - Sao Paulo - Brasil - CEP 04516-001 - Fone + 55 11 2151";
    Regex re = new Regex(@"(?:^|(?<=\s-\s)).*?(?:(?=\s-\s[^-]{8,})|$)", RegexOptions.Singleline);
    MatchCollection matches = re.Matches(input);
    foreach (Match m in matches) {
      Console.WriteLine(m);
    }
  }
}

このコードをここでテストします。

出力:

Av. Rouxinol 101
Sao Paulo - Brasil
CEP 04516-001
Fone + 55 11 2151
于 2012-08-19T00:30:32.540 に答える