Как включить весь текст в группу регулярных выражений до группы параметров или до следующего совпадения?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как включить весь текст в группу регулярных выражений до группы параметров или до следующего совпадения?

Сообщение Anonymous »

Я работаю с Python Re. Я пытаюсь создать 3 группы в совпадениях для текста, настроенного следующим образом:

Код: Выделить всё

1. INTRO:
1.1 Title
1.2 Context:
1.2.1 item1
item1 continued
item1 continued
1.2.2 item2 (03-15-A-B)
1.2.3 item3
text continued
(03-35-A-B)
1.2.4 item4
(03-15
-B-4)
1.2.5 item5, (B-21-Q-2) continued
1.3 Background:
1.3.1 Not Applicable
В данный момент я работаю конкретно над разделом «Контекст (1.2), поэтому все, что я хотел бы извлечь, должно начинаться с 1.2.x, где x — любое целое число, большее» чем 0.
Каждое совпадение будет элементом списка, начинающимся с номера раздела и заканчивающимся непосредственно перед следующим элементом списка (т. е. номером раздела).
Я пытаюсь извлечь три группы в каждом совпадении:
  • Номер раздела (т. е. 1.2.1 и т. д.)
  • Текст номера раздела (т. е. item1)
    Случайный/необязательный идентификационный код (например, (03-15-A-B) в 1.2.2). Этот идентификационный код иногда встречается в тексте (группа 2) элемента списка.
С помощью следующего шаблона регулярного выражения я могу извлечь все три группы. Единственная проблема заключается в том, что когда текст элемента переходит на следующую строку(и), в группу 2 извлекается только первая строка.
Итак, в этом примере с шаблоном, который я сейчас использую используя элементы списка 1.2.1 и 1.2.3, они не извлекают так, как мне хотелось бы. Например, для 1.2.1 извлекается только элемент1, а не элемент1 (продолжение) элемент1 продолжение в совпадении или группе 2.
С В этом шаблоне я также извлекаю идентификационный код без скобок в группе 4, что сделано намеренно.
Для ясности, в приведенном выше примере мои желаемые совпадения и группы будут следующими:< /p> [*]Соответствие 2:
< pre class="lang-none Prettyprint-override">

Код: Выделить всё

1.2.2 item2 (03-15-A-B)
[*]Сочетание 3:
< pre class="lang-none Prettyprint-override">

Код: Выделить всё

1.2.3 item3
text continued
(03-35-A-B)
[*]Сочетание 4:
< pre class="lang-none Prettyprint-override">

Код: Выделить всё

1.2.4 item4
(03-15
-B-4)
[*]Сочетание 5:
< pre class="lang-none Prettyprint-override">

Код: Выделить всё

1.2.5 item5, (B-21-Q-2) continued

Вот мой шаблон:




Вот мой шаблон:

Код: Выделить всё

(1\.2\.\d+)\s+([\s\S].*?(?:\s*(\(?\s*([a-zA-Z0-9.]+\s*[-—]\s*[a-zA-Z0-9.]+\s*[-—]\s*[a-zA-Z0-9.]+\s*[-—]\s*[a-zA-Z0-9.]+)\)?).*?)?)?$
Шаблон идентификационного кода настроен таким образом, поскольку существовало множество случаев различного форматирования.


Подробнее здесь: https://stackoverflow.com/questions/793 ... oup-or-the
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»