NaIchEben;o): Exakte Prüfung Regulärer Ausdruck

Hallo und Grüß Gott,

ich habe eine frage bei der ich langsam aber sicher verzweifel, Google will mir nicht helfen.

Ich möchte mit einem Regulären Ausdruck eine selbst erstellte Datei durchsuchen.

Die Datei sieht in etwa so aus (beispiel):
-----
Farbe ,rot,gelb,blau
Groesse ,klein,mittel,groß
Schwer ,leicht,mittel,schwer
----

In der var $first wird eine eingabe gespeichert und mit einem regulären ausdruck verglichen ob in der Datei (var $dat) ein eintrag ist, das sieht in etwa so aus:

$dat =~ m/^$first/i;

(natürlich fehlt noch eine menge in dem "skript" aber ich denke das genügt)

Wenn ich jetzt "Farbe" eingebe funktioniert es, wenn ich jedoch "Far" eingebe funktioniert es auch. Wie kann ich es so umschreiben, dass nur eine Antwort kommt wenn der EXAKTE Name eingegeben wurde.

Ich hoffe ihr wisst was ich meine.

MFG

  1. Hallo,

    $dat =~ m/^$first/i;
    Wenn ich jetzt "Farbe" eingebe funktioniert es, wenn ich jedoch "Far" eingebe funktioniert es auch. Wie kann ich es so umschreiben, dass nur eine Antwort kommt wenn der EXAKTE Name eingegeben wurde.

    Um den exakten Namen zu machten solltest du den Case-Insensitive-Flag (i) entfernen und $first an die Wortgrenzen binden, also ungefähr (und ungetestet so):

    $dat =~ m/^\b$first\b/;

    Gruß
    Christoph

  2. @@NaIchEben;o):

    Wie kann ich es so umschreiben, dass nur eine Antwort kommt wenn der EXAKTE Name eingegeben wurde.

    Mit Wortgrenzen. [http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichenketten@title=SELFHTML]

    Live long and prosper,
    Gunnar

    --
    Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
  3. Hallo,

    ich habe eine frage bei der ich langsam aber sicher verzweifel, Google will mir nicht helfen.

    warum Google befragen? Wie wäre es mit SELFHTML?
    SELFHTML hat ein Kapitel Perl und darin einen Abschnitt zu <http://de.selfhtml.org/perl/sprache/regexpr.htm@title=Regulären Ausdrücken>.

    Farbe ,rot,gelb,blau
    Groesse ,klein,mittel,groß
    Schwer ,leicht,mittel,schwer

    In der var $first wird eine eingabe gespeichert und mit einem regulären ausdruck verglichen ob in der Datei (var $dat) ein eintrag ist, das sieht in etwa so aus:

    $dat =~ m/^$first/i;

    (natürlich fehlt noch eine menge in dem "skript" aber ich denke das genügt)

    Wenn ich jetzt "Farbe" eingebe funktioniert es, wenn ich jedoch "Far" eingebe funktioniert es auch. Wie kann ich es so umschreiben, dass nur eine Antwort kommt wenn der EXAKTE Name eingegeben wurde.

    Du suchst also Wortgrenzen. Schau Dir den Abschnitt <http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichenketten@title=Reguläre Ausdrücke für Zeichenketten> an.
    Bitte berücksichtige auch die <http://de.selfhtml.org/perl/sprache/regexpr.htm#maskierung@title=Maskierung von Zeichen in regulären Ausdrücken>.

    Freundliche Grüße

    Vinzenz