Regex для сопоставления / удаления пробелов в группе - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь отформатировать блок текста, чтобы его можно было легко найти. Большая часть текста форматируется нормально, но есть отдельные блоки, в которых слова разбиты на группы из 1 и 2 символов (текст взят из PDF-файлов). Внутри только этих блоков я хотел бы удалить все пробельные символы.

Целевой язык - Python. Я написал регулярное выражение для определения блоков:
((?:\s\b[a-zA-Z]{1,2}\b){3,})
Но я озадачен тем, как сопоставлять / удалять только пробелы внутри этих блоков.

Было бы неплохо найти решение, использующее функции регулярного выражения Python, т.е. re.sub, хотя все предложения приветствуются.

Вот пример текста с блоком разделенных символов:

Lorem Ipsum Dolor Sit Amet, Concetetur Adipiscing Elit, Sed Do EiusMod Tempor Incididunt Ut Labore et Dolore Magna Aliqua. Ut enim ad minim veniam, quis nostrud упражнение ullamco labouris nisi ut aliquip ex ea кассовый следствие. Duis aute irure dolor в репереендерит в завитке Velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, иск в виновнике, вызывающий моллис аним, то есть лейборист. Счетчик регистрации - зона предварительной настройки уровня 1 09:00 - 12:00 Регистрация 12:00 - 13:00 Обед 13:00 - 19:00 Регистрация ПРОГРАММА ПО ГЛАНСУ С С Т А Р А 1, 2 0 1 8 1 1 2 2 2 0: 08: 0: 08: 0: 08: 0 0 R eg - это трое в том же духе, что и в другом случае. 0 - 1 6: 20 Sy mpo sium 1 0 П е д е н и е Lorem ipsum dolor sit amet, consitteur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud упражнение ullamco labouris nisi ut aliquip ex ea кассовый следствие. Duis aute irure dolor в репереендерит в завитке Velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat непроизведенный, иск в виновном виновнике моллит аним, то есть лейборист.

Вот ссылка на регулярное выражение выше, примененное к тексту примера: https://regex101.com/r/utVcRy/1

Приемлемый ответ применительно к примерному текстовому блоку может выглядеть примерно так (цифры и знаки препинания могут игнорироваться - написанное мной регулярное выражение не выбирает их, что нормально):

Lorem Ipsum Dolor Sit Amet, Concetetur Adipiscing Elit, Sed do EiusMod Tempor Incididunt Ut Labore et Dolore Magna Aliqua. Ut enim ad minim veniam, quis nostrud упражнение ullamco labouris nisi ut aliquip ex ea кассовый следствие. Duis aute irure dolor в репереендерит в завитке Velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, иск в виновнике, вызывающий моллис аним, то есть лейборист. Регистрация Счетчик - Prefunction Уровень 1 Площадь 9:00 - 12:00 Регистрация 12:00 - 13:00 Обед 13:00 - 19:00 Регистрация ПРОГРАММА НА ВЗГЛЯД Суббота, September1,2018Ballroom1Ballroom2Ballromm3JuniorBallroom2MeetingRoom1MeetingRoom207: 00-08: 00RegistrationDiseaseOralPresentation3OralPresentation4ModeratedPosterPresentation215: 10-16: 20Symposium10Педиатрический Lorem ipsum dolor sit amet, посвященный участию elit, sed do eiusmod temporidid ​​u ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud упражнение ullamco labouris nisi ut aliquip ex ea кассовый следствие. Duis aute irure dolor в репереендерит в завитке Velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat непроизведенный, иск в виновном виновнике молли аним, т. Н. Labour.

1 Ответ

0 голосов
/ 16 мая 2019

https://docs.python.org/3.3/howto/regex.html

Регулярные выражения (называемые RE, или регулярными выражениями, или шаблонами регулярных выражений) по сути являются крошечным, узкоспециализированным языком программирования, встроенным в Python и доступным через модуль re.Используя этот маленький язык, вы определяете правила для набора возможных строк, которым вы хотите соответствовать;этот набор может содержать английские предложения, или адреса электронной почты, или команды TeX, или все что угодно.Затем вы можете задать такие вопросы, как «Соответствует ли эта строка шаблону?» Или «Соответствует ли шаблон где-либо в этой строке?».Вы также можете использовать RE, чтобы изменить строку или разделить ее различными способами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...