从pdf中提取的文本在单词Date或Date之后包含日期:(可以小写,可以包含也可以不包含:in end),日期格式为99.99.999(可以跳过前导零)。日期也可以在下一行。
单词后面的日期日期:,日期,日期:如果被提取,它也可以在下一行中。日期总是以d.m.yyyy、dd.mm.yyyy、d.mm.yyyy或dd.m.yyyy格式分隔购买点。
示例:
Invoice date 03.04.2023
date 03.04.2023
Date: 3.4.2023
Inv. date
03.04.2023
正在尝试使用查找匹配项
var text=@" aaaa vvvv: 202305001
XXXXX YYYYY xxx
Inv. date: 1.05.2023
Bula 14a
Due: 10.05.2023
";
var dateexp = "^.*(?i)Date(.|\n)*\d\d\.\d\d\.\d\d\d\d.*\n";
var rida = Regex.Match(tekst, dateexp, RegexOptions.Multiline);
if (!rida.Success)
throw new Exception();
找不到匹配项。如何找到这些日期?
使用C# .NET 7 ASP.NET MVC控制器。
1条答案
按热度按时间83qze16e1#
您可以修改正则表达式以匹配日期格式和单词“Date”(无论小写还是大写),后跟冒号与否。下面是一个更新的正则表达式,它应该与您提到的格式中的日期匹配:
正则表达式的解释:
(?i)
-忽略大小写标志\bDate\b
-匹配单词边界包围的单词“Date”:?
-匹配可选冒号[\r\n\s]*
-匹配换行符、回车符或空格字符的任意组合\d{1,2}\.\d{1,2}\.\d{4}
-匹配d.m.yyyy、dd.mm.yyyy、d.mm.yyyy或dd.m.yyyy格式的日期,以点分隔。以下是如何在C#中使用此正则表达式来提取日期:
这段代码将从文本中提取日期,并使用
ParseExact
方法将其解析为DateTime
对象。Trim
方法用于从匹配的字符串中删除任何前导或尾随空格字符。CultureInfo.InvariantCulture
参数用于指定日期格式。最后,使用ToString
方法以所需格式打印日期。