Посдкажите, принцип работы данной регулярки? "(\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 раз стоит такой же символ. И возвращает то, что нашла в скобочках, т.е. только первый символ из последовательности одинаковых.

→ Ссылка