Я новичок в регулярном выражении.
У меня есть PHP-код, который извлекает весь текст из PDF-файла и сохраняет его в строковой переменной.
На странице № 2 есть определенный абзац, который мне нужно получить. Я пытаюсь использовать регулярное выражение для получения текста до точек, но проблема в том, что внутри этого абзаца много точек, и регулярное выражение соответствует только первому предложению.
Вот как выглядит часть 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çã"
@PushpeshKumarRajwanshi Хорошо, только что отредактировал.






Это регулярное выражение, кажется, работает для вашего контента,
[A-Z]+.*\.\s*\n
По сути, начните сопоставление с верхнего регистра и захватите все, включая точки в середине текста, и остановитесь на последней точке ..
Дайте мне знать, если это работает для вас.
Это работает для примера текста, но для других, кажется, соответствует и другим частям текста. Взгляните демо
@henriqueromao: он будет соответствовать похожим строкам, но если вы хотите еще больше ограничить, вам придется применить что-то в регулярном выражении, которое отличает его от остального содержимого. Чтобы избежать совпадения с другими, вы можете иметь \n в конце регулярного выражения, чтобы оно совпадало только в том случае, если за точкой следует новая строка.
Теперь это работало для всех текстов. Спасибо, я скорее принимаю ваш ответ!
Рад, что это сработало для вас. Просто напишите мне, если вы видите, что он застрял в любом случае.
В порядке! Еще раз спасибо!
Поскольку предложение идет до конца строки, вы можете использовать многострочное соответствие (модификатор 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.
Можете ли вы опубликовать текстовую версию ваших данных в формате PDF?