Martin: letztes Wort/Wörter finden

Hallo,

ich möchte von einem String (Satz) z.B. "Uli und Petra sind zuhause"

das letzte Wort herrausfiltern, also "zuhause", und in einer Variablen speichern. Zusätzlich möchte ich prüfen ob das Wort vor dem letzten Wort ein bestimmtes (z.B. "sind") ist. Ist dies der Fall soll es in die Variablen mit aufgenommen werden. In diesem Beispiel würde die variable dann "sind zuhause" beinhalten. Der Anfang, also "Uli und Petra" soll in einer anderen Variablen gespeichert werden. Es kann aber auch vorkommen das nach "zuhause " auch ein Leerzeichen Auftritt!

Dies sollte dabei herrauskommen:

"Uli und Petra sind zuhause "
$1 = "Uli und Petra";
$2 = "sind zuhause";

oder

"Uli und Petra waren zuhause"
$1 = "Uli und Petra waren";
$2 = "zuhause";

Ich fummel hier mit split() und =~ s/ herum, schaffe es aber nicht die richtige Lösung zu finden. Wer kann mir helfen?

Gruß
Martin

  1. Hi,

    Ich fummel hier mit split() und =~ s/ herum, schaffe es aber nicht die richtige Lösung zu finden. Wer kann mir helfen?

    mit split() erhälst du ein Array und mit negativen indizes kannst du
    ein array von hinten aufrollen! Ergo:

    • sollte hinten ein leerzeichen dran sein, ist das letzte element des
        arrays leer -> pop(@array)
    • sollte das zweite von hinten @array[-2] eq "sind" ->
        $variable = @array[-2] . @array[-1];
    • else: $variable = @array[-1];

    sollte in etwa so gehen ;-) (ungetestet)

    bye eddie

  2. Hej Martin,

    es gibt da zwei Möglichkeiten:
    my $Satz = "Uli und Petra sind zuhause ";
    my $Part1 = $Satz;
    $Part1 =~ s/([sind]?\s+[\w]+)\s*$//;
    my $Part2 = $1;

    oder mit Suchanweisung:
    $_ = "Uli und Petra sind zuhause ";
    /([sind]?\s+[\w]+)\s*$/;
    my $Part2 = $1;
    my $Part1 = $'; # <= ob es $', $´ oder $` heißt, mußt Du mal nachlesen.

    Zwar ungetestet, sollte aber funktionieren.

    Viel Spaß damit,
    Marko