Показать сообщение отдельно
  #93 (permalink)  
Старый 31.07.2012, 22:16
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Dim@, я постараюсь объяснить. Вы понимаете как работают обратные ссылки? Они ловят ту же подстроку, которая была поймана в захватывающие скобки с указанным порядковым номером.
/
  (.+) // ловит несколько звёдочек (допустим, n)
  (?=\1* // количество звёздочек, кратное n, \1 ловит ту же подстроку, которая была захвачена в (.+)
  , //символ запятая
  \1+ //количество звёздочек, кратное n
  $ //конец входящей строки
/

Следовательно, поиск удаётся только когда n является общим делителем количества звёздочек слева и справа от запятой. Поскольку использовался жадный квантификатор, то интерпретатор остановился на наибольшем общем делителе указанных чисел.
(.+) действительно вначале проверяет всю входящую строку, но дальше поиск не удаётся, поэтому постепенно сокращает количество в квантификаторе.

Последний раз редактировалось oneguy, 31.07.2012 в 22:19.
Ответить с цитированием