如何找到以指定字母开头的单词然后删除字符串中的所有其他内容?

How to find a word beginning with specified letters then remove everything else in the string?

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// 方式,但它只是 returns 一个布尔值告诉我这个词存在。我也尝试过替换 s/// 但是我只能删除我需要保留的词,我想不出一种方法来反转该功能。

编辑 我已经设法将字符串拆分并放入一个新数组中,因此每个单词都是一个单独的索引。

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

我在这个例子中寻找的词是数组中的第二个元素,因为它是第二个词 @build[1]但是这个词可能并不总是字符串中的第二个词,它可能是例如第四个字。我的目的是捕捉那个特定的词供以后使用。

您可以使用 m// 将所需的词存储在捕获组中,然后用匹配的组替换整个原始字符串:

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

演示:https://ideone.com/1l7YJb