2016-02-03 2 views
1

Просто столкнулся регулярное выражение, которое я никогда не видел, потому что я никогда не думал, чтобы попробовать:Регулярного выражения обратная ссылка внутри группы он ссылается

((hello)\2) 

Я предположил бы, что это ошибка. Обратная ссылка ссылается на группу, что это на самом деле в этом, кажется, действует, хотя и будет соответствовать:.

hellohello 

Может кто-нибудь объяснить логику, пожалуйста? Я предполагаю, что это подпадает под категорию вложенной обратной ссылки (или, может быть, даже прямой ссылкой), но используемая логика неясна для меня.

Этот случай похож на «Вложенные ссылки» здесь http://www.regular-expressions.info/backref2.html, но это не то же самое, насколько я могу видеть.

FYI Я уже 99,9% уверен, что никогда не буду использовать это в производственной среде. Не думаю, что я пожелаю этого любому коллеге!

ответ

2
((hello)\2) 

^====1st group 
^===2nd group 

2nd группа содержит hello и \2 соответствует его. Итак, вы получаете True за hellohello.

+1

А, странно, теперь это кажется очевидным. Это просто обратная ссылка. Я продолжал читать группы наоборот. Я думаю, что мой мозг рассматривал внутреннюю группу как группу 1, поскольку она будет первой, которая не будет первой встречей. Благодарю. –

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

  • Нет связанных вопросов^_^