2

ここの初心者。右側に 5 桁の数字が見つかったがキャプチャされなかった場合にのみ、左側から値を取得しようとしています。任意の方向をいただければ幸いです。

例:

Hello Industries                         12345

5 桁の番号を見つけて、会社名を取得する必要があります。

4

3 に答える 3

4

先読み, , を使用(?=)して何かを見つけますが、キャプチャはしません。

.+(?=\s+\d{5})

このオンライン ツールを使用すると、この正規表現が機能することがわかります。

于 2013-07-08T18:15:59.390 に答える
1

一致するグループを使用します。

using System;
using System.Text.RegularExpressions;
public class Test
{
  public static void Main()
  {
    string test = "Hello Industries 12345 Another One 54321";
    var matches = Regex.Matches(test, @"(?<=(\d{5}\s+|^))(?<NAME>.*?)\s+(?<NUMBER>\d{5})");
    foreach(Match m in matches)
    {
      Console.WriteLine(string.Format("Name: {0} #: {1}", 
        m.Groups["NAME"].Value, 
        m.Groups["NUMBER"].Value));
    }
  }
}
于 2013-07-08T18:25:37.530 に答える