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

时间:2017-04-18 13:39:10

标签: arrays string perl www-mechanize www-mechanize-firefox

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///,但是我只能删除我需要保留的单词,我无法想出一种方法来反转这个功能。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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