Существует несколько способов выделения текстового контекста для каждого совпадения, обычно на основе
на результаты сопоставления, представленные в связанных переменных $1, $2 и т. д.,
соответствующие заключенным в квадратные скобки подмножествам шаблона. Таким образом, следующее выделяет
целое слово, содержащее фрагмент как $1, и помещает его в переменную на потом.
если ( /(\b\w*$pat\w*\b)/i
) {$matchword = $1}
В более широком контексте одна из возможностей состоит в том, чтобы выбрать конкретное максимальное количество «любых
символов" (.) в любом направлении. Изучите более сложную конструкцию if:
если (•·/(. {0/24}) (\b\w*$pat\w*\b) (.{0,24})/ ) {
$list .= "$l<b>$2</b>$3" }
Условие истинно при совпадении, а затем определяет $2 как целое слово, содержащее
шаблон — среднее выражение в скобках. Переменные $l и $3 преобразуются в строки
до 24 символов, которые могут быть с любой стороны. Эти три затем объединяются в HTML
строка, используемая для построения контекстного списка, где совпадающее слово визуально выделено жирным шрифтом.
Этого достаточно для создания одного экземпляра на странице. Чтобы создать
список множественных вхождений, нам нужно собрать все совпадения. К счастью, Perl позволяет нам
сделать это, просто назначив результат глобального поиска переменной списка.
©результат = m/(\b\w*$pat\w*\b)/gi
В этом конкретном примере мы получаем список всех полных слов, содержащих шаблон.
Пример того, как создать список из этого:
если (©результат) {
$им = 0;
в то время как (определенный $результат [$im] ) {
print "$result[$im++]\n" ;
}
}
# --endif
В тех случаях, когда мы хотим выбрать контекст, список результатов содержит все скобки
совпадения по порядку для каждого совпадения. Например:
©результат = m/ (.{0,24}) (\b\w*$pat\w*\b) (.{0,24})/g
Где в предыдущем примере с использованием этого синтаксиса мы ссылались на каждую часть, используя
специальные переменные $1, $2 и $3, первое совпадение теперь соответствует элементам списка
1
42
НАСТРОЙКА ВАШЕЙ ВИКИ
$result[0], $result[l] и $result[2]. Следующие матчи имеют соответственно
более высокий индекс, поэтому оператор display должен затем использовать несколько элементов одновременно, чтобы полностью
указать контекст попадания:
$ список .=
"$result[$im++]<b>$result[$im++]</b>$result[$im++]<br>\n"
В настройках вики оператор печати заменяется присваиванием переменной, используемой для
построить страницу и встроить соответствующие HTML-теги, чтобы дать желаемый
макет. В этом примере совпадающее слово выделяется полужирным шрифтом.