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!
您使用的正则表达式不正确。我和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 "