-1
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]但是该单词可能并不总是字符串中的第二个单词,例如,它可能是第四个单词。我的目的是捕获该特定单词以供以后使用。

4

1 回答 1

1

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

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

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

于 2017-04-18T13:48:27.837 回答