如何查找以指定字母开头的单词,然后删除字符串中的所有内容?
问题描述:
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]
但是这个词可能并不总是字符串中的第二个字,也可能是第四个单词例如。我的目的是捕捉这个特定的单词供以后使用。
答
您可以在捕获组匹配使用m//
所期望的字存储,然后与匹配组更换整个原始字符串:
do {$_ = $1 if /(?:^|\s)(CSR\S*)/} foreach @buildno;
这之后删除一切,但不是之前这是我需要的词。另外,我可能错误地称之为“CSR1.1.2.BOI46”的“单词”,因此只有“CSR”被捕获,而不是在第一个时间段之后被捕获。 –
@JamalMahroof:请参阅最新的答案。 –
完美地工作,以及当“字”在字符串中的不同位置。谢谢 –