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

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

29.01.2023, 22:52. Показов 1878. Ответов 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,328
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,328
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,328
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
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru