Re[4]: как регекспом убить производительность
От: anonymous Россия http://denis.ibaev.name/
Дата: 28.07.16 10:25
Оценка:
Здравствуйте, Sharov, Вы писали:

A>>В Perl стандартный способ сделать trim, это код:

A>>
A>>$str =~ s/^\s+//;
A>>$str =~ s/\s+$//;
A>>

A>>И он не спотыкается на указанной в начальном сообщении строке.
S>Почему? Движок, стандарт другой?

Не знаю. Могу только предположить, что оптимизация именно этих выражений, как часто используемых. Точнее второго: движок сразу понимает, что смотреть нужно конце, а не проверять, тянется ли найденное совпадение до конца.

Вот это уже не будет так работать:
$str =~ s/(a|\s)+$//;

А это будет:
$str =~ s/[a\s]+$//;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.