2017-02-12 3 views
-4

Ich bin neu in Perl und ich habe eine Situation, wo ich eine Zahl zwischen zwei verschiedenen Strings extrahieren muss.Wie man eine Zahl zwischen zwei verschiedenen Strings extrahiert

Ich habe dieses String-Variable:

my $var = "1234 23.3\" 

Wie kann ich die Nummer zwischen den white-space extrahiere und die dot? In dem Beispiel soll die Ausgabe 23

Die obige var Zeichenkette variieren kann, sein, so kann es manchmal 123 4.32 oder 123 334.4\ sein, in dem der Ausgang 4 oder 334 bzw. sein sollte.

+0

'perl -E '$ var =" 1234 23.3 "; $ var = ~ /\s+(\d+)\./; sag $ 1'' –

+3

['perldoc perlretut'] (http://perldoc.perl.org/perlretut.html) – melpomene

+0

Hast du irgendwas probiert? –

Antwort

0

Weiß Raum kann mit \s Backslash Folge angepasst werden, siehe perlrecharclass:

\s für ein einzelnes Zeichen als Leerzeichen

Ebenso kann eine Ziffer zugeordnet werden \d mit:

\d passt ein einzelnes Zeichen an sei eine Dezimalziffer.

Um einen Punkt oder Punkt, passen sie überein, dass der Punkt ein regex Meta-Zeichen ist, dass ein beliebiges Zeichen (außer Newline) übereinstimmen, siehe perlre und perlretut, so einen Punkt entsprechen es sollten Sie explizit entkommen.

Daher gegeben $var = "1234 23.3", die folgende Anweisung:

$var =~ /\s+(\d+)\./; 

Die Zahl nach dem Raum extrahieren und sollte vor dem Punkt in der Einfanggruppe variable $1. Weitere Informationen zum + Metazeichen und Informationen zu Erfassungsgruppen finden Sie unter perlre.

Verwandte Themen