JOnas: Anwendung von =~ //

Hi

Also mit dem regulären ausdruck =~ //  kann ich ja in einer Variablen nach einem bestimmten musster suchen. zB

if ($file =~ /[A-Z]/) { das machen }

Nun möchte ich eine Bedingung, dass wenn in der Variable $file der Ausdruck ".." (ohne ") vorkommt, die if Bedingung erfüllt ist. aber wie zum Teufel mache ich das? Hab schon alles Probiert, aber klappt nie.

zb.

=~ /[..]/
=~ /../
=~ /'..'/

Die Bedingung ist schon immer dann erfüllt, wenn nur ein Punkt "." in $file vorkommt.

Ich brauche Hilfe ,)

Gruss

Jonas

  1. Hallo Jonas,

    Die Bedingung ist schon immer dann erfüllt, wenn nur ein Punkt "." in $file vorkommt.

    In den // wird ein regulärer Ausdruck erwartet (perldoc perlre), in denen der Punkt die Bedeutung "ein beliebiges Zeichen" hat. Daher musst Du den Punkt maskieren:

    if ($file =~ /./) {
    }

    Viele Grüße,
    Christian

    1. Hi Christian,

      In den // wird ein regulärer Ausdruck erwartet (perldoc perlre), in denen der Punkt die Bedeutung "ein beliebiges Zeichen" hat. Daher musst Du den Punkt maskieren:
      if ($file =~ /./)

      Ergänzung:
      Wenn er zwei Punkte hintereinander möchte, könnte es denke ich auch so aussehen:

      if ($file =~ /[.]{2}/)

      Viele Grüße
      Torsten

      1. Hallo Torsten,

        Wenn er zwei Punkte hintereinander möchte, könnte es denke ich auch so aussehen:

        if ($file =~ /[.]{2}/)

        <mode typ="klugscheisser">

        Wenn Du schon eine Zeichenklasse nimmst, dann brauchst Du den Punkt auch nicht mehr escapen:

        if ($file =~ /[.]{2}/)

        Außerdem brauchst Du hier gar keine Zeichenklasse, dann musst Du den Punkt aber wieder escapen:

        if ($file =~ .{2]/)

        </mode>

        Viele Grüße,
        Christian

        1. Hi Christian,

          <mode typ="klugscheisser">

          Pah!

          Wenn Du schon eine Zeichenklasse nimmst, dann brauchst Du den Punkt auch nicht mehr escapen:

          Man lernt eben nie aus, deswegen frug ich.

          Außerdem brauchst Du hier gar keine Zeichenklasse, dann musst Du den Punkt aber wieder escapen:
          if ($file =~ .{2]/)

          <mode style="schadenfreude">
          Bist du dir _ganz_ sicher, dass der oben stehende RegEx korrekt ist?
          </mode>

          Viele Grüße
          Torsten

          1. Hallo Torsten,

            if ($file =~ .{2]/)

            <mode style="schadenfreude">
            Bist du dir _ganz_ sicher, dass der oben stehende RegEx korrekt ist?
            </mode>

            *argh* *mist* *grummel*

            Viele Grüße,
            Christian
            (Asche über mein Haupt)

  2. hi hi Jonas

    =~/../ könnte klappen

    der punkt ist ein meta-zeichen (steht für ein zeichen) und wenn du den punkt selber suchst must du ihn maskieren.

    guck auch mal hier
    http://www.netzwelt.com/selfhtml/cgiperl/sprache/regexpr.htm

    bis bis roman