【发布时间】:2021-07-12 20:27:56
【问题描述】:
我正在尝试使用正则表达式从字符串中提取某些数据。字符串如下所示:
这里有一些描述点
经验
公司名称
1 年 4 个月
软件开发人员
2020 年 4 月 - 至今(1 年 1 个月)
城市名称、州名称、国家名称
这里有一些描述点
StringBuilder sb = new StringBuilder();
string pdfData = string.Empty, pdfData2 = string.Empty;
Regex re = new Regex(regexPattern, RegexOptions.IgnoreCase);
using (PdfReader reader = new PdfReader(path))
{
for (int pageNo = 1; pageNo <= reader.NumberOfPages; pageNo++)
{
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
pdfData += PdfTextExtractor.GetTextFromPage(reader, pageNo, strategy);
Match match = re.Match(pdfData);
if (match.Success)
{
pdfData2 += match.Value;
}
}
}
我想提取与此正则表达式模式匹配的公司名称、持续时间(1 年 4 个月)和名称(软件开发人员)(2020 年 4 月 - 现在(1 年 1 个月))。当这个模式匹配时,我想得到这个模式之前的三行。
我试过string regex Pattern = @"[ADFJMNOS][a-z]{2,8}\s[12][0-9]{3}\b";。这让我只有 2020 年 4 月。
【问题讨论】:
-
您的模式不包含任何可以匹配之前行的内容,因此“April 2020”似乎是正确的匹配。在这个模式之前你有什么尝试得到这三行?
-
@ChristophLütjen 我不知道如何创建这样的正则表达式模式,让我在模式之前获得那三行
-
与您的正则表达式问题本身无关,但请记住,
SimpleTextExtractionStrategy按其在 PDF 内容流中出现的顺序提取内容,这不一定与它出现的顺序相同在页面上。 -
所以你问“如何在我的正则表达式中包含换行符”?这个应该有帮助:stackoverflow.com/questions/1175053/…
标签: c# regex asp.net-mvc itext