Код: Выделить всё
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 и т. д.)
- Текст номера раздела (т. е. item1)
Случайный/необязательный идентификационный код (например, (03-15-A-B) в 1.2.2). Этот идентификационный код иногда встречается в тексте (группа 2) элемента списка.
Итак, в этом примере с шаблоном, который я сейчас использую используя элементы списка 1.2.1 и 1.2.3, они не извлекают так, как мне хотелось бы. Например, для 1.2.1 извлекается только элемент1, а не элемент1 (продолжение) элемент1 продолжение в совпадении или группе 2.
С В этом шаблоне я также извлекаю идентификационный код без скобок в группе 4, что сделано намеренно.
Для ясности, в приведенном выше примере мои желаемые совпадения и группы будут следующими:< /p>
- Соответствие 1:
Группа 1:
Код: Выделить всё
1.2.1 item1 item1 continued item1 continued
Код: Выделить всё
1.2.1
- Группа 2:
Код: Выделить всё
item1 item1 continued item1 continued
< pre class="lang-none Prettyprint-override">
Код: Выделить всё
1.2.2 item2 (03-15-A-B)
- Группа 1:
Код: Выделить всё
1.2.2
- Группа 2:
Код: Выделить всё
item2
- Группа 3:
Код: Выделить всё
(03-15-A-B)
< pre class="lang-none Prettyprint-override">
Код: Выделить всё
1.2.3 item3
text continued
(03-35-A-B)
- Группа 1:
Код: Выделить всё
1.2.3
- Группа 2:
Код: Выделить всё
item3 text continued
- Группа 3:
Код: Выделить всё
(03-35-A-B)
< pre class="lang-none Prettyprint-override">
Код: Выделить всё
1.2.4 item4
(03-15
-B-4)
- Группа 1:
Код: Выделить всё
1.2.4
- Группа 2:
Код: Выделить всё
item4
- Группа 3:
Код: Выделить всё
(03-15-B-4)
< pre class="lang-none Prettyprint-override">
Код: Выделить всё
1.2.5 item5, (B-21-Q-2) continued
- Группа 1:
Код: Выделить всё
1.2.5
- Группа 2:
Код: Выделить всё
item5, continued
- Группа 3:
Код: Выделить всё
(B-21-Q-2)
Вот мой шаблон:
Вот мой шаблон:
Код: Выделить всё
(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