Поиск правильного регулярного выражения для соответствия шаблону и извлечение подстроки в python - PullRequest
0 голосов
/ 07 августа 2020

У меня есть текст, который может выглядеть так:

36] Smarandache F. (Editor), Proceedings of the First International Conference on Neutrosophics, Univ. of New Mexico, Gallup Campus, NM, USA, 1-3 Dec. 2001, Xiquan, Phoenix, 2002

Я хочу извлечь:

Proceedings of the First International Conference on Neutrosophics

Я пытался использовать шаблон регулярного выражения следующим образом:

conference = re.search(",(.*)conference(.*),", str(r.lower()))

, и я получаю только это в качестве вывода: Proceedings of the First International

Мой текст будет случайным, но он будет содержать слово вроде «конференция»

Мой вопрос: как я могу разработать шаблон, который может найти слово конференция внутри текста и извлечь подстроку из первой запятой, предшествующей слову конференция, до первой запятой после слова конференция.

, xxxxxxxxxxxxxxxxxx конференция xxxxxxxxxxxxxxxxxxx,

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

1 Ответ

2 голосов
/ 07 августа 2020

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

Вы можете сопоставить Conference, начинающуюся с заглавной C, чтобы получить результат, или сделайте шаблон нечувствительным к регистру, используя re.IGNORECASE

. Если вы используете r.lower(), вы преобразуете строку в нижний регистр, и вместо этого вы получите следующий результат:

процедуры первого международная конференция по нейтрозофике


,\s*([^,]*\bConference\b[^,]*),

Regex demo

Пример кода:

import re
r = "36] Smarandache F. (Editor), Proceedings of the First International Conference on Neutrosophics, Univ. of New Mexico, Gallup Campus, NM, USA, 1-3 Dec. 2001, Xiquan, Phoenix, 2002"

conference = re.search(r",\s*([^,]*\bConference\b[^,]*),", r)
if conference:
    print(conference.group(1))

Вывод

Proceedings of the First International Conference on Neutrosophics
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...