Подстрока Regex, которой предшествует указанное c число любого символа - PullRequest
0 голосов
/ 06 марта 2020

У меня есть список, из которого я хочу извлечь часть текста из тех элементов, которые имеют следующий шаблон:

<Start of string><Less than 30 characters> advocate. versus

Мне нужна только часть <Start of string><Less than 30 characters>

Код, который, я думаю, должен был работать, но не работал:

a = re.search('^.{,30}advocate. versus', text).group(1)

и

a = re.search('^(.{,30})advocate. versus', text).group(1)

Apart из них я также попытался

a = re.search('^(.*)advocate. versus', text).group(1)

, что сработало, но мне нужно только менее 30 символов, а не просто любое количество символов.

Примеры:

Рассмотрим список из двух пунктов:

['Мистер. Радж sh Бхардвадж, адвокат ..... Апеллянт через г-жу Прем Лату Бансал, старшего постоянного адвоката г-на Вишну Шарму, адвоката. против PRADEEP KUMAR SAHNI ..... Ответчик через None ',' г-н Вишну Шарма, адвокат. против JYOTI APPARELS ']

Я хочу извлечь текст из второго элемента, который содержит менее 30 символов, перед словом "защищать. против", но не текст из первого, который содержит более 30 символов. По сути, я хочу это из второго пункта:

Mr.Vishnu Sharma,

Игнорировать регистр текста в списке, предполагая, что все в нижнем регистре.

Любая помощь будет очень признательна.

1 Ответ

0 голосов
/ 06 марта 2020

Это то, что вы ищете. Вам нужен ноль в квантификаторе {0,30}. И как я понял, вы не хотите захватывать адвоката против части. Вы можете использовать предвкушение для этого. Если проверит, есть ли адвокат, но не захватит его. Не используйте ^ в начале. потому что это означает «начало строки», ваш матч не в начале строки. Также имейте в виду - регулярные выражения чувствительны к регистру. «Адвокат» и «Адвокат» - это две разные модели. Я сделал регулярное выражение, совпадающее с регистром, не зависящим от символа

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

(?<=,)[^,]{0,30},(?= [Aa]dvocate\. versus)

демо https://regex101.com/r/cO5wcg/3

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