Предполагая, что это массив с именем @arr
, где каждая запись представляет собой строку, и предполагая, что номер искомого студента находится в $num
, вы можете использовать:
foreach (@arr) {
if (/^Student \b$num\b\s+(\d.*\d)/) {
print "$2\n";
}
}
Это перебирает все записи в массиве.Он ищет строки, которые:
- начинаются с «Студент»
- , за которыми следует точное число
$num
(\b
вокруг него указывают границы слов, поэтому это можетне быть частью другого числа) - сопровождаются пробелами
- имеют шаблон, начинающийся и заканчивающийся максимально длинным числом.
Если это так, образец, начинающийся и заканчивающийся номером, захватывается и печатается.В этом случае это точно соответствует Mark1, Mark2 & Mark3.