在c#中使用正则表达式是否可能?

本文关键字:是否 正则表达式 | 更新日期: 2023-09-27 18:16:43

下面有一个字符串。我需要找到特定字符串之前的日期。c#中的正则表达式是否可行?如果有,请给我一个例子。

String is

*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"。

在c#中使用正则表达式是否可能?

Try: '*(?<date>'d{2}/'d{2}/'d{4})[^/]*?BNA CNTRS

我在正则表达式上使用显式捕获单行选项。

您可以先子字符串直到上述单词"BNA CNTRS",然后得到所需的日期字符串。但是要确保上面提到的格式不会改变,因为它依赖于BNA CNTRS。

使用以下正则表达式查看此匹配:

('d{2}'/'d{2}'/'d{4})(?=[^(BNA)]+BNA CNTRS)

根据你的模式试试:

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);
  }
}
这里演示: