NothingAnother
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору unreal666 Цитата: А нафига вообще \b включать в правила, ты же не замену делать, а всего лишь проверяешь на совпадение. Понятнее вместо \b поставить \W | Во-первых, как раз поэтому, что не замену делать. Как ни крути, но \W - это всё-таки символ, соответственно под него выделяется место на стеке. \b символом не является, след. стек не грузит. Мелочь? Вроде бы да, но курочка по-зёрнышку, а кодер по-байтику... Парсер Regex Engine активно использует рекурсию и на каждом проходе собирает всё совпавшее в стек. А если теперь учесть, что уважаемый mai62 ограничивает доступную парсеру глубину стека, любая экономия приобретает значение. Из этого вытекает категорическая рекомендация не использовать поглотители типа .* ни в начале, ни в конце выражения без особой на то нужды (кое-кто применяет из эстетических соображений ) Ну а во-вторых, \W не охватывает начало строки (ведь это не символ!). Учитывая, что http:// отбрасывается, возникает альтернатива - либо использовать \b либо дополнительную проверку на начало. Оно надо? |