Регулярное выражение: ищем строки 5 типов, формируем list
обрабатываю текст, содержащий наименования документов. Нужно вынуть все наименования документов и поместить в list или вектор. Пример текста:
ва ыва ыа Приложение №222-П пвапвап,
Инсткурцию №155, пп.2.2,
3.3.3 рекомендаций «Правила поведения пр ЧС», Инструкцию №155-АВ
п.139--155 Приказа №ОКК4-1654, п.1.4 приложения А11 к Приказу №ОТК7-1984
п.11 Порядка №17-21-19-1/61212177, Приложение №33П, п.11 Порядка №15-1-21-14/2647586
Я наколхозил регулярку, которая собирает почти все наименования
([А-Я][а-я]*?)(\s\W[0-9]+[А-Я]+)|([А-Я][а-я]*?)(\s\W[0-9]+-[А-Я]+)|([А-Я][а-я]*?)(\s\W[0-9]+)|([А-Я][а-я]*?)(\s\W[А-Я]+[0-9]\W[0-9]+)
Не отлавливаются только следующие:
Порядка №17-21-19-1/61212177 и Порядка №15-1-21-14/2647586
Причём я и для такого типа наколхозил регулярку
([А-Я][а-я]*?)(\s\W[0-9]+\W[0-9]\W[0-9]\W[0-9]\W[0-9]+)
Но если я ее леплю к выражению, описанному выше, намимования всё равно не отлавливаются. Помогите составить человеческую регулярку. И вообще, сколько логических ИЛИ можно использовать в выражении?
Вот пример работы:
library(stringr)
text <- 'ва ыва ыа Приложение №222-П пвапвап,
Инсткурцию №155, пп.2.2,
3.3.3 рекомендаций «Правила поведения пр ЧС», Инструкцию №155-АВ
п.139--155 Приказа №ОКК4-1654, п.1.4 приложения А11 к Приказу №ОТК7-1984
п.11 Порядка №17-21-19-1/61212177, Приложение №33П, п.11 Порядка №15-1-21-14/2647586'
str_extract_all(text, '([А-Я][а-я]*?)(\\s\\W[0-9]+\\W[0-9]\\W[0-9]\\W[0-9]\\W[0-9]+)|([А-Я][а-я]*?)(\\s\\W[0-9]+[А-Я]+)|([А-Я][а-я]*?)(\\s\\W[0-9]+-[А-Я]+)|([А-Я][а-я]*?)(\\s\\W[0-9]+)|([А-Я][а-я]*?)(\\s\\W[А-Я]+[0-9]\\W[0-9]+)')