Thomas Lachmann: suchen

halihallo,

gibt es eine einfache möglichkeit einen String nach dem Inhalt einer Liste durchsuchen zu lassen?

@liste=("name","vorname","strasse");
$text1 = "mein name ist dieter";
$text2 = "mein vorname ist klaus";
$text3 = "die strasse in der ich wohne heisst weingarten";
$text4 = "hallo ich freue mich sehr";

Die Suche soll nun mei text1-3 erfolgreich sein und bei text4 nicht.

wie könnte ich das am einfachsten machen??

vielen Dank

Thomas

  1. Hallo Thomas!

    Schau Dir mal das Kapitel über "Reguläre Ausdrücke mit Alternativen" an:
    <../../tgcg.htm#a5>

    Benutze nun die JOIN-Funktion, um Deine Liste (@liste) mit zu verbinden und in den Skalar $suchalternativen zu schreiben.

    Mit der Anweisung

    if ($suchstring =~ /$suchalternativen/ )

    kannst Du nun prüfen, ob eines der Worte in dem $suchstring vorkommt.

    Problematik: Wenn jemand bei Deinem $text4 schreibt: "Ich freue mich sehr auf den Besuch von Herrn Strasser.". Dann findet er nämlich auch das Wort Strasse. Dieses Problem hast Du aber wahrscheinlich bei jeder "Suchmethode".

    Also aufpassen!
    Bye

    Christian Schnagl

    PS: Vielleicht gibts noch eine einfachere Lösung, aber die o.g. ist mir spontan eingefallen.

    1. Hallo Thomas!

      Hi,

      Schau Dir mal das Kapitel über "Reguläre Ausdrücke mit Alternativen" an:
      <../../tgcg.htm#a5>

      in <../../tgcg.htm#a4>
      wird ein ähnliches Beispiel beschrieben und es findet nur die gewünschten Wörter

      Benutze nun die JOIN-Funktion, um Deine Liste (@liste) mit zu verbinden und in den Skalar $suchalternativen zu schreiben.

      Mit der Anweisung

      if ($suchstring =~ /$suchalternativen/ )

      kannst Du nun prüfen, ob eines der Worte in dem $suchstring vorkommt.

      Problematik: Wenn jemand bei Deinem $text4 schreibt: "Ich freue mich sehr auf den Besuch von Herrn Strasser.". Dann findet er nämlich auch das Wort Strasse. Dieses Problem hast Du aber wahrscheinlich bei jeder "Suchmethode".

      Also aufpassen!
      Bye

      Christian Schnagl

      PS: Vielleicht gibts noch eine einfachere Lösung, aber die o.g. ist mir spontan eingefallen.

      Gruß Jörg

      1. Hallo Jörg,

        in <../../tgcg.htm#a4>
        wird ein ähnliches Beispiel beschrieben und es findet nur die gewünschten Wörter

        in diesem Beispiel findet Perl nur einzelne Wörter. Ihm ging es um eine Liste. Man müßte #a4 und #a5 kombinieren. Das Problem bleibt aber trotzdem bestehen, da es in jedem Bereich "Doppeldeutigkeiten" gibt. Ich wollte nur auf die Problematik aufmerksam machen. Diese kann auch nicht durch "Einzelwortsuche" umgangen werden (Computer sind nicht so superschlau wie Du...). Da müßte es schon eine "Sinn-Suche" geben, um die in Deinen Augen "gewünschten" Wörter zu finden. Weitere Diskussionen bitte per E-Mail !

        Bye

        Christian Schnagl

        1. Hididoo Leude,

          vielen Dank für die spontanen Antworten.

          werd' mich gleich mal ins Zeug legen ;-)

          thomas