Я пишу сценарий Perl, который ищет термин в больших частях текста. То, что я хотел бы отобразить пользователю, — это небольшое подмножество текста вокруг условия поиска, чтобы пользователь мог иметь контекст того, где используется это условие поиска. Результаты поиска Google — хороший пример того, чего я пытаюсь добиться, когда контекст вашего поискового запроса отображается под заголовком ссылки.
Мой основной поиск использует это:
if ($text =~ /$search/i ) {
print "${title}:${text}\n";
}
($title содержит заголовок элемента, в котором был найден поисковый запрос) Это слишком много, поскольку иногда $text будет содержать сотни строк текста.
Это будет отображаться в Интернете, поэтому я мог бы просто указать заголовок в качестве ссылки на фактический текст, но для пользователя нет контекста.
Я попытался изменить свое регулярное выражение, чтобы захватить 4 слова до и 4 слова после поискового запроса, но столкнулся с проблемами, если поисковый запрос находился в самом начале или в самом конце $text.
Что было бы хорошим способом сделать это? Я попытался найти CPAN, потому что я уверен, что у кого-то есть модуль для этого, но я не могу придумать правильные условия для поиска. Я бы хотел сделать это без модулей, если это возможно, потому что установить модули здесь проблематично. У кого-нибудь есть идеи?