Как найти слово, начинающееся с указанных букв, а затем удалить все остальное в строке?

my @buildno = $mech->xpath('/html/body/form/table/tbody/tr[2]/td[3]/table
/tbody/tr[2]/td/table/tbody/tr[1]/td/table/tbody/tr[1]/td', type => 
$mech->xpathResult('STRING_TYPE'));

У меня есть код выше, который содержит строку. Мне нужно поймать слово, начинающееся с CSR содержится в массиве в строке. Есть только один элемент @buildno[0], Мне нужно сохранить слово и удалить все остальное в строке. Я пытался использовать m// однако, он возвращает только логическое значение, говорящее мне, что слово существует. Я также попытался заменить s/// однако я могу удалить только то слово, которое мне нужно сохранить, я не могу найти способ отменить эту функцию.

РЕДАКТИРОВАТЬ Мне удалось разделить строку и поместить ее в новый массив, чтобы каждое слово представляло собой отдельный индекс.

my $buildno = join('', @buildno);
my @build = split(' ',$buildno);
print @build[1];

Слово, которое я ищу в этом случае, является вторым элементом в массиве, поскольку это второе слово. @build[1]однако слово не всегда может быть вторым словом в строке, это может быть, например, четвертое слово. Моя цель - запечатлеть это конкретное слово для последующего использования.

1 ответ

Решение

Вы можете найти нужное слово, используя m// сохраняя его в группе захвата, а затем заменив всю исходную строку на соответствующую группу:

do {$_ = $1 if /(?:^|\s)(CSR\S*)/} foreach @buildno;

Демо: https://ideone.com/1l7YJb

Другие вопросы по тегам