StringsWieFindeIchHerausObEineZeichenketteVorkommt

Strings - Mustererkennung

Wie finde ich heraus, ob in einem String eine bestimmte Zeichenkette vorkommt?

(Autor: Ishka & perl-community)

Ich habe einen String, und möchte wissen, ob eine bestimmte Zeichenkette / ein bestimmtes Muster darin vorkommt bzw. nicht vorkommt:

        $string='Das ist nur ein Musterstring';
        if ($string=~ m/string/)
         {
         print 'Das Muster >string< kommt vor'
         }
         if ($string!~ m/nicht/)
         {
         print 'Das Muster >nicht< kommt nicht vor'
         }
Erklärung:
=~ ist ein Operator für Strings. Das Gegenteil von =~ ist !~

m// ist ein Mustererkennungsoperator

        if ($string=~ m/string/)
         {
         print 'Das Muster >string< kommt vor'
         }

in dieser Zeile prüft der Operator =~, ob in dem (vorher zugewiesenen) String "Das ist nur ein Musterstring" der String "string" enthalten ist (der Ausdruck zwischen m//). Da in "Das ist nur ein Musterstring" "string" tatsächlich enthalten ist, führt er die if-Anweisung auch aus.

        if ($string!~ m/nicht/)
         {
         print 'Das Muster >nicht< kommt nicht vor'
         }

In dieser Zeile prüft !~, ob in "Das ist nur ein Musterstring" "nicht" vorkommt, allerdings mit dem Unterschied zu vorhin, daß diesmal die if-Anweisung ausgeführt wird, falls der zu erkennende String nicht vorkommt.

Außer m// gibt es noch s/// und tr///, die aber hier nicht näher behandelt werden:


        $text="Hallo Welt\n";
        $text=~s/llo/lli hallo/;
        print $text; # Halli hallo Welt
        $text=~tr/i/o/;
        print $text; # Hallo hallo Welt

Ergänzungen

finden des Substrings mit index()

Man kann auch mit index() überprüfen, ob ein String in dem größeren String vorkommt:
  $string = 'Dies ist ein Musterstring';
  if(index($string,'string') !=  -1){
    print "'string' ist im String enthalten.\n";
  }
  else{
    print "'string' ist nicht enthalten.\n";
  }

siehe perldoc -f index

- ReneeBaecker - 15 Apr 2005

UtilFaqSubForm edit

Titel Wie finde ich heraus, ob in einem String eine bestimmte Zeichenkette vorkommt?
Autor Ishka & perl-community
Bereich FaqStrings
Topic revision: 2005-04-15, ReneeBaecker
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.