Ron: Regulärer Ausdruck will nicht wie ich will

Hallo,

hab da schwierigkeiten mit einem regulären Ausdruck.
Für nen geübten bestimmt kein Problem.

Eigentlich möchte ich einfach nur prüfen ob eine Variable einen bestimmten String enthält. ist dieser enthalten, soll mit dem nächsten weitergemacht werden.

my $ausschliessen="wärme wärme";
next if ($inhalt  =~ /$ausschliessen/i);

wenn ich nur nach "wärme" suche klappt es.
aber Datensätze mit nur "wärme" sollen ja verarbeitet werden.
Möchte nur die mit "wärme wärme" rausfischen...

Probleme scheint das Leerzeichen zu machen.
Kann mir da jemand netterweise auf die Sprünge helfen?

Gruß Ron

  1. Hallo Ron,

    also Dein Ausdruck sucht nach Wörten die "wärme wärme" enthalten

    $ausschliessen="wärme wärme";
    $inhalt = "wärme";
    if ($inhalt  =~ /$ausschliessen/i) {
     print $ausschliessen." gefunden";
    }
    else {
     print $ausschliessen." nicht gefunden";
    }

    gibt
    wärme wärme nicht gefunden
    aus.

    Ist es das, was Du erwartest? Oder das Gegenteil?

    Gruß
    Paul

    1. Hallo Ron,

      also Dein Ausdruck sucht nach Wörten die "wärme wärme" enthalten

      $ausschliessen="wärme wärme";
      $inhalt = "wärme";
      if ($inhalt  =~ /$ausschliessen/i) {
      print $ausschliessen." gefunden";
      }
      else {
      print $ausschliessen." nicht gefunden";
      }

      gibt
      wärme wärme nicht gefunden
      aus.

      Ist es das, was Du erwartest? Oder das Gegenteil?

      Gruß
      Paul

      Hi,

      musste plötzlich weg vom rechner, deshalb jetzt erst meine antwort....

      ja das war es.

      beispiel:

      1 wärme wärme und so weiter
      2 wärme macht nichts
      3 ohne wärme is auch gut

      dann soll der erste ignoriert werden.
      ich suche nach speziel dieser "phrase: "wärme wärme"

      Gruß Ron

      1. 1 wärme wärme und so weiter
        2 wärme macht nichts
        3 ohne wärme is auch gut

        dann soll der erste ignoriert werden.
        ich suche nach speziel dieser "phrase: "wärme wärme"

        wie wär's mit index?

        Struppi.

        --
        Javascript ist toll (Perl auch!)
      2. Hi Ron,

        $ausschliessen="wärme wärme";

        1. if ("wärme"  =~ /$ausschliessen/i)

        2. if ("wärme macht nichts"  =~ /$ausschliessen/i)

        Diese IF-Abfrage ergibt für Fall 1 true, für Fall 2 false. So wie ich das sehe, solltest Du Deine IF-Abfrage negieren (umkehren), damit Du Dein gewünschtes Ergebnis erhälst.

        Gruß
        Paul

        1. Diese IF-Abfrage ergibt für Fall 1 true, für Fall 2 false. So wie ich das sehe, solltest Du Deine IF-Abfrage negieren (umkehren), damit Du Dein gewünschtes Ergebnis erhälst.

          es gibt auch !~

            
          #! /usr/bin/perl -w  
          use strict;  
          my $ausschliessen = "wärme wärme";  
          my @inhalt = (  
          "wärme wärme und so weiter",  
          "wärme macht nichts",  
          "ohne wärme is auch gut"  
          );  
            
          foreach(@inhalt)  
          {  
          printf "%25s => %12s: %s gefunden\n", $_, $ausschliessen, (!/$ausschliessen/i ? ' nicht ' : '');  
          }  
          
          

          Struppi.

          --
          Javascript ist toll (Perl auch!)
  2. Eigentlich möchte ich einfach nur prüfen ob eine Variable einen bestimmten String enthält. ist dieser enthalten, soll mit dem nächsten weitergemacht werden.

    Dazu ist index besser geeignet vor allem wesentlich schneller.

    Struppi.

    --
    Javascript ist toll (Perl auch!)