1

私は正規表現の初心者なので、助けが必要です。文字列を解析して、 40000から99999までの範囲の数字の 1 つ以上のインスタンスを見つけるのを手伝ってくれる人はいますか? 文字列の例を次に示します。

  • 注文の詳細、Acme、#46405、53000、86232、4/17- 3 instances
  • PSA 注文の詳細: 雇用慣行 (46445); 4-16-12 開始- 1 instance
  • PC ピットストップ 32134 ダイレクト 4/18/12- 0 instances
4

2 に答える 2

4

あなたはこのようなことを試すことができます:

(?<!\d)[4-9]\d{4}(?!\d)

正規表現でそれを見る

編集:これはc#それをテストするためのコードスニペットです:

// could be whatever
var str = "50000 alpha 43 84100";
var regex = new Regex(@"(?<!\d)[4-9]\d{4}(?!\d)");
foreach (Match match in regex.Matches(str))
    Console.WriteLine(match.Value);

この出力:

50000
84100
于 2012-04-20T18:31:14.433 に答える
3

正規表現を使用する必要があります

(?<!\d)([4-9]\d{4})(?!\d)

テストされていないコード:

using System;
using System.Collections;
using System.Text.RegularExpressions;

class Program
{
  static void Main()
  {
    string input = "50000 Order Acme, #46405,53000,86232, for 4/17 60000";
    Regex t = new Regex(@"(?<!\d)([4-9]\d{4})(?!\d)", RegexOptions.Singleline) 
    MatchCollection theMatches = t.Matches(input) 
    for (int counter = 0; counter < theMatches.Count; counter++)
    {
      Console.WriteLine(theMatches[counter].Value); 
    }
  }
}

RegexOptions.Multilineの代わりに複数行の入力を使用しRegexOptions.Singlelineます。


注:文字列の最初と最後で一致する正規表現を常にテストすることをお勧めします。

于 2012-04-20T18:21:53.823 に答える