0

我正在尝试在 c# 中将 PDF 解析为 XML,并且我想提取如下标题:I. INTRODUCTION, II. PAGE LAYOUT,按我文件中的罗马数字分类。我想写一个正则表达式来匹配这样的字符串我尝试了几件事但不起作用,有人可以帮忙吗?

4

3 回答 3

1

这是一个简单的

\b[IVX]+。[AZ]+

于 2011-07-24T08:02:25.930 回答
1

这应该做你需要的:

[IVXLCDM]+。[AZ]+

如此处所述:

\。将匹配句点,因为句点字符是正则表达式语法中的特殊字符(意味着匹配任何字符)。

另一方面,如果你想确保字符串只包含罗马数字和标题名称,你可能想使用这个:

^[IVXLCDM]+\. [A-Z ]+$

^$称为锚点。^指示正则表达式引擎从字符串的最开头开始匹配,而指示$正则表达式引擎在字符串的最末尾停止匹配。罗马数字的完整列表可以从维基百科获得

于 2011-07-24T08:08:49.957 回答
1

这应该主要工作:

^[IVXLCDM]+\. [^\p{Ll}]+?$

这将匹配包含数字和符号的标题,但将明确排除 Unicode 小写字符。

此外,请确保您使用选项 RegexOptions.Multiline,如下所示:(inp您的输入字符串在哪里)

foreach (var match in
    Regex.Matches(inp,
        @"^[IVXLCDM]+\. [^\p{Ll}]+?$",
        RegexOptions.Multiline))
    Console.WriteLine(match.Value);
于 2011-07-24T13:41:53.420 回答