|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : vilfred 2:5020/400 29 Aug 2001 16:10:08 To : Timur V. Irmatov Subject : Re: не понял как работает regex :( -------------------------------------------------------------------------------- TV> "network workshop" =~ /^(\w+)(\w+) \2(+w)$/ TV> Первая скобка матчит network. Вторая скобка не TV> матчит ничего, т. к. за TV> network идет пробел. Снова возвращаемся к 1-й. TV> Матчим networ, 2-я матчит k, TV> матчим пробел, дальше идет w, а \2 есть k. TV> Возвращаемся ко 2-й. Для нее TV> больше альтернатив нет. Возвращаемся к первой, TV> матчим netwo, 2-я матчит rk, TV> матчим пробел, дальше идет wo, а надо rk. Почему именно wo??, почему не or? В конце концов почему не сравнивается с \2 сразу весь workshop. Почему \2 имеет длинну 2 буквы и лезет в переменную $3 именно справа и именно на две буквы вглубь слова workshop, именно от правого края? потому, что справа от workshop стоит пробел, и иначе как \swork совпадение не воспримет регексп? TV> Возвращаемся ко 2-й, матчим r, не TV> удается сопоставить пробел с k, возвращаемся к TV> 1-й. Матчим netw ... TV> Эта чехарда продолжается, пока 1-я скобка не TV> сопоставит net. TV> 2-я сопоставляет work, матчим пробел, \2 матчит TV> work, 3-я скобка забирает TV> shop. TV> Готово ... -- TEAM [Маньяки] Отправлено через сервер Talk.Ru - http://www.talk.ru --- ifmail v.2.15dev5 * Origin: Talk.ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/6488f6da85f4.html, оценка из 5, голосов 10
|