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"));
Mam powyższy kod, który zawiera ciąg znaków. Muszę uchwycić słowo zaczynające się od CSR
zawarty w tablicy w ciągu. Jest tylko jeden element @buildno[0]
. Muszę dotrzymać słowa i usunąć wszystko inne z ciągu. Próbowałem użyć m//
sposób jednak zwraca tylko wartość logiczną, mówiąc mi, że słowo istnieje. Próbowałem też napisów s///
jednak mogę tylko usunąć słowo, które muszę zachować, nie mogę znaleźć sposobu na odwrócenie tej funkcji.
EDYTOWAĆ Udało mi się podzielić ciąg i umieścić go w nowej tablicy, aby każde słowo było osobnym indeksem.
my $buildno = join("", @buildno);
my @build = split(" ",$buildno);
print @build[1];
Słowo, którego szukam w tym przypadku, jest drugim elementem w tablicy, ponieważ jest drugim słowem @build[1]
jednak słowo nie zawsze może być drugim słowem w ciągu, może być na przykład czwartym słowem. Moim celem jest uchwycenie tego konkretnego słowa do późniejszego użycia.
Odpowiedzi:
1 dla odpowiedzi № 1Możesz dopasować żądane słowo za pomocą m//
przechowywanie go w grupie przechwytywania, a następnie zastąp cały oryginalny ciąg tą dopasowaną grupą:
do {$_ = $1 if /(?:^|s)(CSRS*)/} foreach @buildno;
Próbny: https://ideone.com/1l7YJb