REGEX для получения целого абзаца из строки, извлеченной из PDF

Я новичок в регулярном выражении.
У меня есть PHP-код, который извлекает весь текст из PDF-файла и сохраняет его в строковой переменной.
На странице № 2 есть определенный абзац, который мне нужно получить. Я пытаюсь использовать регулярное выражение для получения текста до точек, но проблема в том, что внутри этого абзаца много точек, и регулярное выражение соответствует только первому предложению.

Вот как выглядит часть PDF, которую мне нужно получить: REGEX для получения целого абзаца из строки, извлеченной из PDF

Мне нужно получить весь абзац, выровненный по правому краю. Все они начинаются с этого предложения «AGRAVO DE EXCECUÇÃO PENAL». Но конец отличается от одного к другому.

Вот так выглядит значение строковой переменной (нужная мне часть выделена жирным шрифтом):

"ПОДЕР ЮДИЦИАРИО"
TRIBUNAL DE JUSTICA DO ESTADO DE SãO PAULO
13ª CâMARA DE DIREITO CRIMINAL
AGRAVO DE EXECUçãO PENAL Nº 000000000000 - VOTO Nº 0000 2
ВОТО № 00000
AGRAVO DE EXECUçãO PENAL Nº 0000000000000000000
AGRAVANTE: MINISTéRIO PúBLICO DO ESTADO DE SãO PAULO
АГРАВАДА: НАЗВАНИЕ
Agravo de Execução Penal Execução Уголовный Pleito de Manutenção Do Caráter Hediondo Do Crime De Tráfico Privilegiado, FIM de Modifivary OS Cálculos Novo Enternedo Do C. STF externado Нет Julgamento Do HC Nº 118.533 / MS, No Sentido de a afastar A Natureza Hedionda Do Tráfico Privilegiado DE DROGAS DECISãO DO JUíZO EM CONSONâNCIA COM O ENTENDIMENTO ESPECíFICO DO PLENáRIO DO C. STF, QUE Há DE PREVALECER AGRAVO NãO PROVIDO.
CUIDA-SE DE AGRAVO DE EXECUçãO PENAL INTERPOSTO PELO M IN IS T ÉR IO P Ú BLIC O E ST A DO D E S Ã O P A ULO CONTRA DECISãO PROFERIDA PELO JUíZO DO DEECRIM DA 6ª RAJ (COMARCA DE RIBEIRãO PRETO), QUE INDEFERIU R PEDIçã"

Можете ли вы опубликовать текстовую версию ваших данных в формате PDF?

Pushpesh Kumar Rajwanshi 30.01.2019 13:08

@PushpeshKumarRajwanshi Хорошо, только что отредактировал.

henrique romao 30.01.2019 13:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
128
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Это регулярное выражение, кажется, работает для вашего контента,

[A-Z]+.*\.\s*\n

По сути, начните сопоставление с верхнего регистра и захватите все, включая точки в середине текста, и остановитесь на последней точке ..

Демо

Дайте мне знать, если это работает для вас.

Это работает для примера текста, но для других, кажется, соответствует и другим частям текста. Взгляните демо

henrique romao 30.01.2019 13:23

@henriqueromao: он будет соответствовать похожим строкам, но если вы хотите еще больше ограничить, вам придется применить что-то в регулярном выражении, которое отличает его от остального содержимого. Чтобы избежать совпадения с другими, вы можете иметь \n в конце регулярного выражения, чтобы оно совпадало только в том случае, если за точкой следует новая строка.

Pushpesh Kumar Rajwanshi 30.01.2019 13:33

Теперь это работало для всех текстов. Спасибо, я скорее принимаю ваш ответ!

henrique romao 30.01.2019 13:36

Рад, что это сработало для вас. Просто напишите мне, если вы видите, что он застрял в любом случае.

Pushpesh Kumar Rajwanshi 30.01.2019 13:39

В порядке! Еще раз спасибо!

henrique romao 30.01.2019 13:41

Поскольку предложение идет до конца строки, вы можете использовать многострочное соответствие (модификатор m), чтобы ^ и $ соответствовали началу и концу строки для каждой строки. Тогда это простое регулярное выражение должно работать:

/^AGRAVO DE EXECUÇÃO PENAL.*$/m

например

preg_match('/^AGRAVO DE EXECUÇÃO PENAL.*$/m', $string, $matches);
echo $matches[0];

Вывод:

AGRAVO DE EXECUÇÃO PENAL EXECUçãO CRIMINAL PLEITO DE MANUTENçãO DO CARáTER HEDIONDO DO CRIME DE TRáFICO PRIVILEGIADO, A FIM DE MODIFICAR OS CáLCULOS NOVO ENTENDIMENTO DO C. STF EXTERNADO NO JULGAMENTO DO HC Nº 118.533/MS, NO SENTIDO DE AFASTAR A NATUREZA HEDIONDA DO TRáFICO PRIVILEGIADO DE DROGAS DECISãO DO JUíZO EM CONSONâNCIA COM O ENTENDIMENTO ESPECíFICO DO PLENáRIO DO C. STF, QUE Há DE PREVALECER AGRAVO NãO PROVIDO.

Демо на 3v4l.org

Другие вопросы по теме