Метасимвол \K в регулярных выражениях Perl 5.10 не только полезен, но и, как выясняется на реальном проекте, меняет мысли разработчика :-)
Время от времени возникает задача выделить из текста одно или несколько предложений, чтобы сформировать сниппет записи. Неправильный подход — обрезать строку на заданном числе символов и поставить многоточие (Фейсбук в транслящиях вообще обрезает строку по байтам, и от русских букв иногда отрезается половинка юникодной последовательности). Чуть более приятный результат (но подход настолько же неправилен) дает отсечение по границе слова (как делает Яндекс в поисках по блогам).
Обрезать же текст на границе предложения (ну или по крайней мере, после точки) одним регулярным выражением без \K не очень удобно (приходится задумываться о том, чтобы угодить коротким предложениям).
С метасимволом \K это проще:
$snippet =~ s{^.{150}[^\.]+\.\K.*$}{};
Комментировать