Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/75: Рейтинг темы: голосов - 75, средняя оценка - 4.61
26 / 10 / 0
Регистрация: 26.11.2018
Сообщений: 82

REGEX. Подряд три одинаковые буквы

22.05.2019, 09:39. Показов 14838. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, ребят!

Встретилась такая задача, не пойму как подобрать шаблон:

Oh no! It seems my friends spilled beer all over my keyboard last night and my keys are super sticky now. Some of the time whennn I press a key, I get two duplicates. Can you ppplease help me fix thhhis?

О нет! Кажется, мои друзья пролили пиво по всей моей клавиатуре прошлой ночью, и мои клавиши теперь очень липкие. Иногда, когда я нажимаю клавишу, я получаю две копии. Можете ли вы помочь мне исправить это?

Необходимо убрать повторяющиеся буквы там где их три, оставить одну.

Знаю, что можно задавать переменную в шаблоне, но у меня с таким:
Python
1
r'(?P<pattern>\w){2}'
, заменив на пустую строку '', не проходит все тесты и выдает:

You should only remove strings that fit the task description. They are finite in length, and you are matching too much. For example, aaaaa should become aaa. I said that sometimes each character gets repeated two times. In the string aaaaa I pressed a once, which produced the following string aaa. I then pressed it two times again, without getting any repeats. I only want you to remove the repeated characters!

Вы должны удалять только те строки, которые соответствуют описанию задачи. Они конечны по длине, а вы слишком много подходите. Например, ааааа должна стать ааа. Я сказал, что иногда каждый персонаж повторяется два раза. В строке aaaaa я нажал один раз, что привело к следующей строке aaa. Затем я снова нажал два раза, не получая повторений. Я только хочу, чтобы вы удалили повторяющиеся символы!

«Затык». Куда идти дальше?!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.05.2019, 09:39
Ответы с готовыми решениями:

Три подряд идущих буквы
Всем привет! Возникла такая проблема. Есть задача проверить список на буквы Если 3 буквы подряд идущие(например, qwe), то выводит...

Задан текст, найти слова, содержащие две одинаковые буквы подряд и их порядковые номера
Допустим, задан следующий текст: &quot;hello my neighbour, i'am glad to see you.&quot; необходимо решить максимально просто без всяких замудрений. ...

Удалить подряд идущие одинаковые буквы
помогите,пожалуйста, с составлением программы: Оставить в данном слове из каждого набора одинаковых букв, идущих подряд, только одну букву

10
22.05.2019, 11:45

Не по теме:

пили бы водку - проблем бы не было

0
26 / 10 / 0
Регистрация: 26.11.2018
Сообщений: 82
22.05.2019, 11:50  [ТС]
Catstail, а по теме?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38195 / 21128 / 4309
Регистрация: 12.02.2012
Сообщений: 34,733
Записей в блоге: 14
22.05.2019, 11:57
Это нужно обязательно регулярным выражением?
0
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
22.05.2019, 12:29
Python
1
2
3
import re;
result = re.sub(r'([а-яa-z])(?=\1\1)[^\s\.]', '', 'Вы должны удалять только те строки, которые соответствуют описанию задачи. Они конечны по длине, а вы слишком много подходите. Например, ааааа должна стать ааа. Я сказал, что иногда каждый персонаж повторяется два раза. В строке aaaaa я нажал один раз, что привело к следующей строке ааа. Затем я снова нажал два раза, не получая повторений. Я только хочу, чтобы вы удалили повторяющиеся символы!');
print(result);
Добавлено через 13 минут
Сорри, вот

Python
1
2
3
import re
result = re.sub(r'([а-яa-z])\1(?=\1)', '', 'Oh no! It seems my friends spilled beer all over my keyboard last night and my keys are super sticky now. Some of the time whennn I press a key, I get two duplicates. Can you ppplease help me fix thhhis?')
print(result)
0
26 / 10 / 0
Регистрация: 26.11.2018
Сообщений: 82
22.05.2019, 12:35  [ТС]
Azdeman, из пяти букв должно остаться три. «Hero» один раз нажимает, и пишется
помимо нажатого еще и два раза эта же буква.А потом уже клава работает норм. Из этого
следует, что из пяти остается три. А у вас удаляются по две
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
25.05.2019, 17:47
Лучший ответ Сообщение было отмечено 7esoterik7 как решение

Решение

Python
1
re.sub(r'(\w)\1\1', r'\1',
Не?
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
25.05.2019, 19:27
Python
1
2
3
4
5
6
7
8
import  re
def cleaner(mstr):
    res = re.sub(r'([а-яa-z])\1(?=\1)', '',mstr)
    print(res)
    return res
if __name__ == '__main__':
    mstr=input()
    cleaner(mstr)
0
26 / 10 / 0
Регистрация: 26.11.2018
Сообщений: 82
25.05.2019, 19:32  [ТС]
Рыжий Лис, все сработало! Только я точку поставил вместо \w.
А можете прокомментировать решение, а то я че-то не понял...
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
25.05.2019, 20:24
(\w) — регулярка захватывает одну букву (ну или у вас если точка — то любой символ), а дальше ищем уже захваченную группу.

Как только регулярка сработает вся (три символа), то заменяем её на на первый символ.
1
26 / 10 / 0
Регистрация: 26.11.2018
Сообщений: 82
25.05.2019, 21:19  [ТС]
Рыжий Лис, понял!
Получается что:
1) обрамляем в скобки - мы выделяем группу
2) знак \1 означает ПЕРВУЮ выделенную в скобках группу - точно такую же, какую программа поймала при первом прохождении



Рыжий Лис, спасибо!!!

Кстати, кому интересно, данная задачка вот с этого сайта https://regex101.com/
Там и задачи есть и проверка сразу и много других фишек
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.05.2019, 21:19
Помогаю со студенческими работами здесь

напечатать последовательно двойные буквы(подряд две одинаковые)
Нужно напечатать последовательно двойные буквы(подряд две одинаковые) и чтобы считывал с одного файла где находиться текст и записывал уже...

Regex: проверить символьную строку, чтобы первые три ее символа были буквы
Как проверить символьную строку чтобы первые три ее символа были буквы(а не цифры и т.п.)???

Найти в тексте слова, содержащие две одинаковые буквы подряд
Конец семестра, а две последние лабы не сданы!:( Сам бы решил, но я даже не знаю с чего начать. 2.В текстовом файле input.txt...

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

Искать в строке 3 одинаковые буквы, идущие подряд и записывать только одну
дана строка, должен искать 3 одинаковые буквы, идущие подряд и записывать только одну, например: в исходном файле было...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru