2016-09-19 2 views
4

Я пытаюсь написать функцию, которая будет искать строку (все числовые, 0-9) для переменной последовательности из 4 или более повторяющихся символов.Python: поиск строки для переменных повторяющихся символов

Вот некоторые примеры входы:

«14888838»: функция будет возвращать правда, потому что он нашел «8888».

«1111»: функция вернет True, потому что она обнаружила «1111».

"1359": функция вернет False, потому что в ней не найдено 4 повторяющихся символа.

Моим первым наклонением является использование re, поэтому я подумал, что шаблон: «[0-9] {4}» будет работать, но возвращает true, если найдет четыре цифры в строке, независимо от того, будут ли они соответствуют или нет.

В любом случае, заблаговременно за вашу помощь.

Dave

ответ

4

Вы можете рассчитывать на capturing и backreferences:

if re.search(r'(\d)\1{3}', s): 
    print(s) 

Здесь (\d) захватывает цифры в 1-й группе и \1{3} матчи 3 вхождений значения захваченной, которые непосредственно справа, что цифра.

См regex demo и Python demo

import re 
values = ["14888838", "1111", "1359"] 
for s in values: 
    if re.search(r'(\d)\1{3}', s): 
     print(s) 

Выход:

14888838 
1111 
+0

Согласен, но вы должны избегать 'input', потому что это встроенная функция в Python 3. –

+0

Спасибо! Это сделал трюк! :) –

+1

Еще раз спасибо Wiktor, я принял его. :) –

Смежные вопросы