0

文字列が次のように一致する正規表現をどのように表現しますか。

text, text, number

ノート:

text =は、任意の量の単語またはスペースにすることができます。

数値=ほとんどが4桁の数値です。

カンマ(、)も一致する必要があります。

例として、次の文字列が有効です。

'Arnold Zend, Red House, 2551'
4

5 に答える 5

3

そのための正規表現パターンは次のようになります(括弧は、個々のアイテムにアクセスする場合のキャプチャグループです。

([a-zA-Z\s]{3,}), ([a-zA-Z\s]*{3,}), ([0-9]{4})

2つの名前とコンマで区切られた4桁の数字に一致し、名前の長さは少なくとも3文字です。必要に応じて、名前の最小文字を変更できます。そして、これは文字列がこのパターンに一致するかどうかを確認する方法です。

// 'Regex' is in the System.Text.RegularExpressions namespace.

Regex MyPattern = new Regex(@"([a-zA-Z\s]*), ([a-zA-Z\s]*), ([0-9]{4})");

if (MyPattern.IsMatch("Arnold Zend, Red House, 2551")) {
    Console.WriteLine("String matched.");
}

RegexTesterを使用して式をテストしましたが、正常に機能します。

于 2013-01-17T02:11:36.667 に答える
2

正規表現を使用します:

(?<Field1>[\w\s]+)\s*,\s*(?<Field2>[\w\s]+)\s*,\s*(?<Number>\d{4})

\w=すべての文字(大文字と小文字)とアンダースコア。1つ以上+を示します。

\s=空白文字。ゼロ以上*を示します。

\d= 0から9までの数字は、正確に4{4}でなければならないことを示します。

(?<Name>)=一致するグループ名とパターンをキャプチャします。

次のように、名前空間内のRegexオブジェクトでこれを使用できます。System.Text.RegularExpressions

  static readonly Regex lineRegex = new Regex(@"(?<Field1>[\w\s]+)\s*,\s*(?<Field2>[\w\s]+)\s*,\s*(?<Number>\d{4})");

  // You should define your own class which has these fields and out
  // that as a single object instead of these three separate fields.

  public static bool TryParse(string line, out string field1,
                                           out string field2, 
                                           out int number)
  {
    field1 = null;
    field2 = null;
    number = 0;

    var match = lineRegex.Match(line);

    // Does not match the pattern, cannot parse.
    if (!match.Success) return false;

    field1 = match.Groups["Field1"].Value;
    field2 = match.Groups["Field2"].Value;

    // Try to parse the integer value.
    if (!int.TryParse(match.Groups["Number"].Value, out number))
      return false;

    return true;
  }
于 2013-01-17T02:40:22.207 に答える
0

これを試して -

[\w ]+, [\w ]+, \d{4}
于 2013-01-17T02:26:31.357 に答える
0

([a-zA-Z \ s] +)、([a-zA-Z \ s] +)、([0-9] {4})

于 2013-01-17T02:28:57.530 に答える
0

Unicodeと互換性を持たせるには:

^[\pL\s]+,[\pL\s]+,\pN+$
于 2013-01-17T09:03:34.850 に答える