Форум сайта python.su
Здравствуйте! Задача следующая:
Текст содержит слова, разделенные пробелами, запятыми и точками. Следует составить регулярное выражение, которое будет находить фрагменты текста, состоящие из трех слов начинающихся с одной и той же буквы, и стоящих подряд.
Результат, который должен получиться:
Данная строка содержит самые разные слова, с регулярным выражением в вашем тексте надо найти, но только их.
Мое выражение (в аттаче) находит только первые совпадения на букву с.
Как дописать выражение?
Прикреплённый файлы: Новый текстовый документ.txt (33 байта)
Офлайн
имхо тут регулярки не очень подходят
>>> s ='Данная строка содержит самые разные слова, с регулярным выражением в вашем тексте надо найти, но только их.' >>> l = s.split() >>> for i in range(len(l) - 2): ch = l[i][0] if l[i+1][0] == ch and l[i+2][0] == ch: print(l[i:i+3]) ['строка', 'содержит', 'самые'] ['выражением', 'в', 'вашем'] ['надо', 'найти,', 'но'] >>>
Офлайн
vic57, спасибо что потратил время. Тут нужно именно регулярное выражение, а не код. Наверное я некорректно задачу поставил. Это курс по основам регулярных выражений, без привязки к языкам.
Офлайн
>>> import re >>> >>> text = 'abc cxx1 cxx2 cxx3 c4 def cxx5 cxx6 ghi cxx7 cxx8 cxx9 cxx10 jkl' >>> >>> re.findall(r'\b(c[^ ,.]*[ ,.]+c[^ ,.]*[ ,.]+c[^ ,.]*)[ ,.]+', text) ['cxx1 cxx2 cxx3', 'cxx7 cxx8 cxx9'] >>>
Отредактировано py.user.next (Ноя. 17, 2017 02:42:48)
Офлайн
в файле ответ
Прикреплённый файлы: РВ.txt (41 байт)
Офлайн