Rückgabe einer Teilzeichenfolge mithilfe von Perl-regex
Ich bin Herumspielen mit Perl und versuchen, zu einem besseren Verständnis der substring/regex-Funktionalität.
Sagen, ich habe einen string wie
[48:31.8] Gesendet: >33*1311875297587*eval*0* * frame[0]*"Ein"<
und wollen zurück 1311875297587. Es wird immer in diesem format. Wie kann ich dies tun, mit Hilfe von Perl?
Dank
Beschreiben Sie, wie identifizieren Sie den Teil des Interesses. String von Ziffern mindestens 3 Ziffern lang ist? Beginnen Sie mit 4. Zeichen ">"? Ziffern vor dem "* "eval"? etc...
InformationsquelleAutor Roger | 2011-08-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Davon aus, dass "[48:31.8]..." ist in $string ist, dann:
$number
undefiniert, wenn der string nicht übereinstimmen, sonst wird es enthalten die Ziffern zwischen"*"
und"*eval*"
.split
, dass die Eingabe auf*
und analysiert werden, basierend auf dem Teilstring-Nummer. Weniger hack, mehr robust.InformationsquelleAutor Sean
InformationsquelleAutor Karoly Horvath
InformationsquelleAutor abra
Für was es Wert ist, ich denke, das ist eine robustere Antwort:
Dies ermöglicht den Zugriff auf alle Ihre Felder, wenn Sie Sie brauchen, und verlässt sich nicht auf die Ordnung zu analysieren, aus einem bestimmten Bereich.
Ersetzen Sie die
while
Schleife mit welchem line-by-line-iteration, die Sie wollen. Für die Prüfung, obwohl, führen Sie dies als ein Perl-Skript, und fügen Sie dann in Ihre Linie[48:31.8] Sent: >33*1311875297587*eval*0*frame[0]*"A"<
oder sonst was ist.InformationsquelleAutor kevlar1818