c#多行标头的正则表达式

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

我是一个新的c#程序员。我想做一个简单的c#应用程序,它将从pdf文件(书)中提取标题,如果它们是这种格式:

1.1电气/电子工业

1.2简史

1.3计量单位

我使用的代码是:

string pattern = @"('d+)('.)('d+) ([A-Z]+).([A-Z]+).([A-Z]+).([A-Z]+).([A-Z]+)";
Regex.match(strText,pattern); 

对于单行标头很好,但对于两行/多行标头不起作用。有谁能帮忙吗?

c#多行标头的正则表达式

我不熟悉c#风格的正则表达式,但不是.的任何字符匹配(除了新行)?

如果您需要新的行,那么您还必须在末尾包含一个实际的'n ,可能也包含?,除非您计划还有其他选择。

但我有点惊讶,这个正则表达式没有引起任何问题,除非书的格式恰好是完美的。

假设您已经在单个字符串中获得所需的目录表,唯一的问题是解析二级标头。

修改为只匹配大写字母的正则表达式。

您可以使用以下代码实现所需的结果:

    string pattern = @"(('d+'.'d+) ([A-Z's]+)'n)+";
    var match = Regex.Match(input, pattern);
    var headers = new List<string>();
    for (var i = 0; i < match.Groups[1].Captures.Count; i++)
    {
        headers.Add(match.Groups[1].Captures[i].Value);
    }

之后的headers将包含所有需要的数据。

假设input包含输入数据。另外,请注意'n是新行字符。

你的正则表达式简化了。

('d+'.'d+)表示"一个或多个数字字符"、点、"一个或多个数字字符"、空格的序列。

([A-Z's]+)'n - "一个或多个大写字母或空格","换行字符"

同样,阅读下面的文章来熟悉c#正则表达式。