Я использую регулярное выражение для сопоставления определенных выражений в тексте.
предположим, что я хочу сопоставить число или числа, разделенные запятыми - включая или не пробелы, - все в скобках в тексте. (на самом деле спички более сложные, включая пробелы и т. д.)
Я делаю следующее:
import re
pattern =re.compile(r"(\()([0-9]+(,)?( )?)+(\))")
matches = pattern.findall(content)
совпадений - это список совпадений,
for i,match in enumerate(matches):
print(i,match)
Пример текста:
Lorem ipsum dolor sit amet (12,16), священник 23, участвующий в элите. Курабитур (45). Vivamus aliquam Velit (46,48,49) в augue faucibus, id eleifend purus egestas. Aliquam vitae mauris cursus, facilisis enim condimentum, vestibulum enim. Praesent
ВОПРОС 1
Как получить список полных совпадений, таких как:
matches=[ "(12,16)", "(45)", "(46,48,49)"]
ВОПРОС 2:
как мне получить список с n предшествующими словами полного соответствия?
Я пытаюсь разбить текст на слова.
Проблема здесь в том, что попадание (12,16) может быть несколько раз в тексте. Вторая проблема при использовании:
mywordlist=text.split(' ')
может также разбить совпадение в случае, если я хочу поймать знаки препинания отдельно от слов, и если в () есть пробелы.
В примере слова, которые я хочу вернуть, подчеркнуты на картинке вручную.
4 слова перед матчем:
"ipsum dolor sit amet" (12,16)
"adipiscing elit. Curabitur" (45)
". Vivamus aliquam velit" (46,48,49)
ПОСЛЕ НЕКОТОРЫХ КОММЕНТАРИЙ:
print (спички) дает мне:
matches = pattern.findall(content)
print('the matches are:')
print('type of variable matches',type(matches))
print(matches)
[('(', '16', ',', ')'), ('(', '45', '', ')'), ('(', '49', ',', ')')]