0

私は以下の文字列を持っています。特定の文字列の前の日付を見つける必要があります。C#の正規表現で可能ですか。もしそうなら、plsは私に例を提供します。

文字列は

*044*05/02/2013*14:24*
*1234*1*(Iw(1*0, M-00, R-10011002100310041
A/C 
OPERATION OK


*044*05/02/2013*14:24*
*1234*1*(Iw(1*0, M-00, R-10011002100310041
A/C 


*044*05/02/2013*14:24*
*1234*1*(Iw(1*0, M-00, R-10011002100310041
A/C 
OPERATION OK


[0r(1)2[000p[040qe1w3h162*054*05/04/2013*14:27*
*1234*1*(Iw(1*0, M-00, R-10011002100310041
A/C 


*055*05/04/2013*14:27*
*1234*1*(Iw(1*0, M-00, R-10011002100310041
A/C 
OPERATION OK


[020t*057*05/04/2013*14:27*
[05p
           BNA CNTRS
  LAST CLEARED : 00/00/00 00:00
                 COUNT 
  ENCASHED       141

[0r(1)2[000p[040qe1w3h162*065*05/05/2013*14:30*
*1234*1*(Iw(1*0, M-00, R-10011002100310041
A/C 
OPERATION OK


*071*05/06/2013*14:31*
*1234*1*(Iw(1*1, M-00, R-10011002100310041
A/C 
CUSTOMER CANCEL


[020t*076*05/06/2013*14:32*
[05p
           BNA CNTRS
  LAST CLEARED : 05/04/13 14:28
                 COUNT 
  ENCASHED       11

上記の文字列で、文字列「BNA CNTRS」の前の日付を見つけたいと思います。この文字列では、その日付を「05/04/2013」「05/06/2013」として取得する必要があります。

4

4 に答える 4

0

試す:\*(?<date>\d{2}/\d{2}/\d{4})[^/]*?BNA CNTRS

ここでは、正規表現で明示的なキャプチャ、単一行オプションを使用しています。

正規表現ヒーロー リンク: http://regexhero.net/tester/?id=c6694c7e-7777-4cc0-ab76-8846ef365330

于 2013-06-03T06:28:12.557 に答える
0

次の正規表現でこの一致を確認してください。

(\d{2}\/\d{2}\/\d{4})(?=[^(BNA)]+BNA CNTRS)
于 2013-06-03T07:03:49.277 に答える
0

あなたのパターンに基づいてこれを試してください:

string strRegex = @"(?=(\d{2}/\d{2}/\d{4}))(?=([^\n]+\n)+[^\n]*BNA\sCNTRS[^=\n]*\n)([^\n]+\n)+";
RegexOptions myRegexOptions = RegexOptions.Singleline;
Regex myRegex = new Regex(strRegex, myRegexOptions);
string strTargetString = @"......"; #text you want to search

foreach (Match myMatch in myRegex.Matches(strTargetString))
{
  if (myMatch.Success)
  {
    System.Out.println(myMatch.groups(1).value);
  }
}

デモ:こちら

于 2013-06-03T07:04:46.740 に答える
0

最初に「BNA CNTRS」という単語まで部分文字列を作成してから、目的の日付文字列を取得できます。ただし、「BNA CNTRS」に依存しているため、上記の形式が変更されないことを確認してください。

于 2013-06-03T06:02:10.803 に答える