Regex匹配文本,但c#找不到匹配项

本文关键字:找不到 文本 Regex | 更新日期: 2023-09-27 17:50:42

我正试图将Regex与我从PDF创建的文本文件中的日期相匹配。当我在Regexhero中构建它时,Regex匹配,但在调试时,我发现c#根本找不到匹配。

关于为什么会发生这种情况,有什么想法吗?

如果有帮助的话,我可以提供一些代码,但是我所有的其他正则表达式都是匹配的,并且代码非常健壮,涉及许多不同的类,公共变量和函数。需要一些时间来让它变得可读。

(在c#控制台应用程序中使用vs 2012 pro)(用regexhero确认)

正则表达式:
* ?((5月1月2月3月4月| | | | | 6月| | 7月8月9月10月11月12月| | | |)* ' d {1,2}, ' d {4}) ' n。 ? ' n。* ?佐治亚电力公司

文本文件片段:

                                                      Dec 26, 2012
GEORGIA POWER COMPANY
BIN #19999
21141 Ralph McGuiver Blvd.
Atlanta, GA 30308-3374


                         GI LANDING LLC
                         Customer***
                         PO BOX 1234
                         LOGAN UT 84323


                                                                                                                              Please Pay By                                Jan 10, 2013
                                                           Customer Name                                   Account Number     Total Due                                              $ 61.91
                                                           IV LANDING LLC                      19380-29341

             Service Address                                                                                 Service Period   Contact Us 24 hours a day, 7 days a week
             900 GI LANDING DR                                                        Nov 26, 2012 - Dec 25, 2012
             HSE A                                                                                                                      georgiapower.com
                                                                                                                                           Account Number             Web Access Code
             Billing Summary
                                                                                                                                           135130-530141              845089
             Previous Bill Amount                                                                                  $ 63.34                 Customer Service           Power Outage Reporting
             Payment Received On 12/06/12                                 Thank You!                                

Regex匹配文本,但c#找不到匹配项

您使用的正则表达式不正确。我和Expresso核对过了。

下面的正则表达式将匹配您需要的日期。日期可以从组 date 中提取。

(?<DATE>(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)?'s+'d{1,2},'s+'d{4})'s+GEORGIA POWER COMPANY

您的模式中有一些错误。首先,第一个字符'*'不应用于前面的任何字符,并导致正则表达式抛出异常。此外,'n.?'n. *?段假设唯一的行分隔符是'n,而在我们的例子中也有'r字符。

正确的格式应该大致是:

's*?((Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)'s'd{1,2},'s'd{4})['r'n]*GEORGIA POWER COMPANY

你可以修改它使它更有限制性。

使用示例:

var regex = new Regex(@"'s*?((Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)'s'd{1,2},'s'd{4})['r'n]*GEORGIA POWER COMPANY");
var input = @"your input here";
var match = regex.Match(input);
if (match.Success) { /*Operate*/ }

我找到了一个有效的方法。你的所有回复都在Expresso和regexhero中工作,然而,我的特定控制台应用程序出于某种原因只喜欢这个。谢谢你的回复。

正确的正则表达式:"' s *((5月1月2月3月4月| | | | | 6月| | 7月8月9月10月11月12月| | | |)' ' d {1,2}, ' ' d {4}) ' s * G "