Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
26 / 17 / 9
Регистрация: 25.02.2021
Сообщений: 59

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

29.01.2023, 22:52. Показов 1821. Ответов 11

Студворк — интернет-сервис помощи студентам
Дан следующий текст:
Python
1
2
3
'hello world
hello  hello hello world
worldhellohellohello'
Какое должно быть регулярное выражение для того, чтобы оно включало:
Python
1
2
3
'hello  hello hello'
'world\nworld'
'hellohellohello'
В интернете, нашел только вот такое решение для поиска двух одинаковых рядом расположенных слов, разделенных пробелом (неограниченным числом):
Python
1
(\w+)\s+\1
Но в него входит только строка:
Python
1
'hello  hello'
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.01.2023, 22:52
Ответы с готовыми решениями:

Поиск с использованием регулярных выражений
Добрый день, уважаемые форумчане! Очень нужен совет.. Нижеизложенный код позволяет искать в базе данных по введенному условию, название...

Поиск и замена с использованием регулярных выражений
Добрый день, помогите пожалуйста решить задачу, буду приочень благодарен: Имеется массив данных, в котором разбросанны однотипные...

Поиск скобок в строке с использованием регулярных выражений
Есть строка, в которой нужно знать есть ли там скобки "{" "}", но скобки в регулярных выражениях есть спец символ. Спец символ отменяется...

11
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
30.01.2023, 08:08
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Python
1
2
3
4
5
6
7
8
import re
 
s = '''hello world
hello  hello hello world
worldhellohellohello'''
 
for i in re.finditer(r'(\w{2,})(\s*\1)+', s):
    print(i[0])
3
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,319
30.01.2023, 09:25
iSmokeJC, такое мне тоже пригодится, может какую ошибку найду.....
и на моём 2.7 ошибка на последней строке:
'_sre.SRE_Match' object has no attribute '__getitem__'
=
Объект '_sre.SRE_Match' не имеет атрибута '__getitem__'
не в курсе как это лечится?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
30.01.2023, 10:36
Если в труп тыкать палочкой, он не оживет.

Добавлено через 1 час 5 минут
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
не в курсе как это лечится?
В курсе. В документации описано, кстати
1
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,319
30.01.2023, 10:51
Цитата Сообщение от iSmokeJC Посмотреть сообщение
В документации описано, кстати
забанили меня там))
Цитата Сообщение от iSmokeJC Посмотреть сообщение
В курсе
и как?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
30.01.2023, 10:57
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
и как?
В документации написано
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
забанили меня там))
Не пытайся показать себя еще дурнее, чем есть на самом деле
1
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,319
30.01.2023, 13:36
нагуглил
причина: у Match'а нет [] (который __getitem__)
рецепт лечения: использовать груп
на свой страх прописал
Python
1
print(i.group(0))
работает, но лучше спросить - так?

Добавлено через 18 минут
какое-то не кашерное решение
если так
Python
1
s = "/*метр* 0000 1-99+кило*/"
ответ 0000 - как оно повторяется?
да и в исходном:
Python
1
2
3
s = '''hello world
hello  hello hello world
worldhellohellohello'''
ответ
hello hello hello
world
world
hellohellohello
как по мне должно быть
hello hello
hello hello
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
30.01.2023, 13:45
0
26 / 17 / 9
Регистрация: 25.02.2021
Сообщений: 59
30.01.2023, 22:55  [ТС]
Ципихович Эндрю, Вы неправы, исходя из задания решение верное и рабочее. Если же Вам надо, чтобы повторяющиеся слова были разделены пробелом, необходима небольшая корректировка: вместо
Python
1
\s*
вставить
Python
1
\s+
\s* означает пробел встречается 0 или бесконечное число раз;
\s+ означает пробел встречается 1 или бесконечное число раз.
Если же Вы хотите, чтобы повторяющиеся слова были разделены любыми пробелами, кроме переноса на следующую строку и возврата каретки, тогда конечное выражение модифицируется в
Python
1
(\w{2,})([^\S\r\n]+\1)+
, где
^ - кроме
\S - все символы, кроме пробелов;
\r - возврат каретки;
\n - новая строка.
Таким образом, [^\S\r\n] равноценно "за исключением всех непробельных символов, возврата каретки и новой строки".
iSmokeJC, Спасибо за Ваше решение! Что мне не очень понятно, почему \1 загоняется внутрь скобок
Python
1
(\s*\1)+
? Можете объяснить, пожалуйста?
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
30.01.2023, 23:06
Цитата Сообщение от erastfandorin Посмотреть сообщение
почему \1 загоняется внутрь скобок
Чтоб впереди стоящий пробел тоже захватить вестимо.
1
26 / 17 / 9
Регистрация: 25.02.2021
Сообщений: 59
30.01.2023, 23:16  [ТС]
iSmokeJC, Вроде бы все понятно. Спасибо!
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
30.01.2023, 23:17
erastfandorin, да не за что, обращайся
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.01.2023, 23:17
Помогаю со студенческими работами здесь

Поиск сходства строк с использованием регулярных выражений
Скажите а есть какая-нибудь встроенная функция для сравнения строк по регулярным выражениям ? Ну по типу LIKE. Тоесть строки 122221111...

Поиск файла с использованием подстановочных символов и регулярных выражений
А не подскажите еще как правильно сгенерить имя файла для цикла for? строка с ошибкой for %%j in (..\*\*\Имя файла только из букв.doc)...

Поиск всех вхождений подстроки c использованием регулярных выражений
Добрый день. Стоит такая задача: найти число всех вхождений подстроки в строку и вывести все позиции вхождений на экран. Строка и подстрока...

Поиск с использованием регулярных выражений в MS SQL Server 2012
Собираюсь на MS SQL Server 2012 построить клиентскую базу. Основная масса клиентов – физ. лица, которые работают в разных компаниях,...

Поиск и удаление атрибутов в файле html с использованием регулярных выражений
Дали вот такое задание: На вход программы подается произвольный html-файл, необходимо удалить все атрибуты у всех тегов, кроме заданных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru