2017-04-18 5 views
-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')); 

Ich habe den obigen Code, der eine Zeichenfolge enthält. Ich muss das Wort beginnend mit CSR im Array innerhalb einer Zeichenfolge erfassen. Es gibt nur ein Element @buildno[0]. Ich muss das Wort behalten und alles andere in der Zeichenfolge entfernen. Ich habe versucht, den m// Weg zu verwenden, aber es gibt nur einen boolean zurück, der mir sagt, dass das Wort existiert. Ich habe auch versucht, s/// Untertiteln, aber ich kann nur das Wort entfernen, das ich behalten muss, kann ich nicht einen Weg finden, diese Funktion umzukehren.Wie finde ich ein Wort, das mit den angegebenen Buchstaben beginnt, und entferne dann alles andere in der Zeichenfolge?

BEARBEITEN Ich habe es geschafft, die Zeichenfolge aufzuteilen und in ein neues Array zu setzen, so dass jedes Wort ein eigener Index ist.

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

Das Wort, das ich in diesem Fall bin auf der Suche ist das zweite Element in der Anordnung, wie sie das zweite Wort ist @build[1] aber das Wort nicht immer das zweite Wort in der Zeichenfolge sein kann, könnte es das vierte Wort sein beispielsweise. Mein Zweck ist es, dieses spezielle Wort für die spätere Verwendung zu erfassen.

Antwort

1

Sie können das gewünschte Wort m// es in einer Capture-Gruppe zu speichern unter Verwendung passen und dann mit dieser abgestimmt Gruppe der ganze ursprüngliche Zeichenfolge ersetzen:

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

Demo: https://ideone.com/1l7YJb

+0

Dies entfernt alles nach, aber nicht vor das Wort, das ich brauche. Auch das "Wort", wie ich es fälschlicherweise genannt habe, ist dieses "CSR1.1.2.BOI46", daher wird nur "CSR" erfasst und nichts nach der ersten Periode. –

+0

@JamalMahroof: Bitte sehen Sie die aktualisierte Antwort. –

+0

Funktioniert perfekt, wenn das "Wort" an einer anderen Stelle in der Zeichenfolge steht. Danke –

Verwandte Themen