Регулярное выражение для соответствия I.text в c # - PullRequest
0 голосов
/ 24 июля 2011

Я пытаюсь проанализировать PDF в XML в c # и хочу извлечь заголовки, такие как: I. ВВЕДЕНИЕ, II. СХЕМА СТРАНИЦ, которые классифицированы по римским цифрам из моего файла. Я хотел бы написать регулярное выражение для соответствия строк, как это я пытался пару вещей, но не работает, кто-нибудь может помочь?

Ответы [ 3 ]

1 голос
/ 24 июля 2011

Это должно сделать то, что вам нужно:

[IVXLCDM] +.[AZ] +

Как указано здесь :

\.будет соответствовать периоду, так как символ точки является специальным символом (то есть соответствует любому символу) в синтаксисе регулярного выражения.

С другой стороны, если вы хотите убедиться, что строка содержит только римские цифрыи название заголовка, вы можете использовать это:

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

^ и $ называются якорями.^ дает указание механизму регулярных выражений начинать сопоставление с самого начала строки, а $ предписывает обработчику регулярных выражений прекращать сопоставление в самом конце строки.Полный список римских цифр можно получить из Википедии

1 голос
/ 24 июля 2011

В основном это должно работать:

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

Это будет соответствовать заголовкам, содержащим цифры и символы, но явно исключит строчные буквы Юникода.

Также убедитесь, что вы используете опцию RegexOptions.Многострочный, вот так: (где inp - ваша входная строка)

foreach (var match in
    Regex.Matches(inp,
        @"^[IVXLCDM]+\. [^\p{Ll}]+?$",
        RegexOptions.Multiline))
    Console.WriteLine(match.Value);
1 голос
/ 24 июля 2011

Вот простой

\ b [IVX] +.[AZ] +

...