Почему регулярное выражение b(\w+?)\1\b находит catcat — слово, состоящее из двух одинаковых частей

184 просмотра
0
0 Комментариев

Помогите понять почему так именно так работает регулярное выражение.

Решал задачу по регуляркам, суть была в поиске слов состоящих из двух одинаковых частей(catcat, wqewqe), в итоге подобрал случайно регулярку которая работает, но не могу понять почему так, вот она

\b(\w+?)\1\b

Ход моих мыслей: сначала мы ищем слова и разбиваем их по группам, но вот как обращение к первой группе которую нашли, найдет нам в тексте слово catcat. По всей видимости я что-то упускаю(наверное как работают группы) объясните пожалуйста как отрабатывает данная регулярка и почему она находит слова из двух одинаковых частей.


Добавить комментарий

1 Ответы

Python Опубликовано 09.12.2018
0

Ваша регулярка \b(\w+?)\1\b

  • \b...\b — ищем все слово
  • \b(\w+?) — с начала слова берем одну или больше букв, но не жадно
  • \1 — ссылаемся на первую группу. Т.е. после первой группы должна идти еще одна такая же последовательность символов.

Т.е. Вашу регулярку можно представить так

\b \w+?  \w+ \b
  | 1  || 2 |

с условием, что 1 == 2

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up