Посдкажите, принцип работы данной регулярки? "(\w)\\1+"
Надо найти какие символы дублируются. Что означает \w понятно. Не понятно 2 косые черты \ и 1+. Поясните, пожалуйста, либо подскажите ссылку, где посмотреть
def duplicate_count3(text):
dup_count = re.findall("(\w)\\1+", "".join(sorted(text.lower())))
return dup_count
input_string = 'aAbcAaBB1i11'
print(duplicate_count3(input_string)) # output ['1', 'a', 'b']
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
2 слеша - просто экранирование, потому что кто-то поленился использовать raw-string. Т.е., по хорошему, там надо писать r"(\w)\1+".
\w- матчит букво-циферные символы (не только, но не суть)\1- это ссылка на группу 1, т.е. соответствует тому, чего найдётся в первых скобочках+- означает предыдущая последовательность (\1 в данном случае) повторяется 1 и более раз
Итого, регуляка ищет букво-циферный символ, за которым как минимум 1 раз стоит такой же символ. И возвращает то, что нашла в скобочках, т.е. только первый символ из последовательности одинаковых.