Benutzer-Werkzeuge

Webseiten-Werkzeuge


perl

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
perl [14.01.2016 12:08]
marc regexp
perl [16.01.2016 10:06] (aktuell)
marc [Optionale Parameter in sub()]
Zeile 1: Zeile 1:
 ====== Perl ====== ====== Perl ======
 +
 +Siehe auch:
 +
 +https://wiki.selfhtml.org/wiki/Perl
  
 ===== Subroutinen mit Übergabeparametern ===== ===== Subroutinen mit Übergabeparametern =====
Zeile 38: Zeile 42:
  
  
-===== regexp ===== 
  
-Regular Expressions - oder, auf Deutsch, reguläre Ausdrücke - dienen dazu, einen Text auf bestimmte Zeichenfolgen zu überprüfen und diese dann - bei Bedarf - zu manipulieren. Diese Suchbegriffe können durch die regexp-Syntax sehr variabel gehalten werden. +===== Optionale Parameter in sub() ===== 
- Sie sind Programmiersprachen-unabhängig, soll heissen, sowohl für php als auch für Perl ( als Beispiel ) gelten die gleichen Regeln - nur das "Drumherum" ist anders. Deswegen werde ich mich - zu Beginn - nur mit den reinen regexp beschäftigen.+ 
 + 
 +  sub defineUhrzeitAnsage ($;$$){ 
 +    my ($player, $count, $volume) = @_; 
 +     
 +    #Standardwert für String setzen, wenn nicht übergeben 
 +    $volume //= "40"; 
 +   
 +    #Standardwert für Integer setzen, wenn nicht übergeben 
 +    $count = 0 unless $count; 
 +    ... 
 +    } 
 + 
 +===== reguläre Ausdrücke - regexp ===== 
 + 
 +https://wiki.selfhtml.org/wiki/Perl/Regul%C3%A4re_Ausdr%C3%BCcke 
 + 
 +Regular Expressions - oder, auf Deutsch, reguläre Ausdrücke - dienen dazu, einen Text auf bestimmte Zeichenfolgen zu überprüfen und diese dann - bei Bedarf - zu manipulieren. Diese Suchbegriffe können durch die regexp-Syntax sehr variabel gehalten werden. Sie sind Programmiersprachen-unabhängig, soll heissen, sowohl für php als auch für Perl (als Beispiel) gelten die gleichen Regeln - nur das "Drumherum" ist anders.
  
  
- Regexp setzen sich zusammen aus Literalen und aus Metazeichen. Literale sind Buchstaben, auf die exakt geprüft werden soll und die Metazeichen bringen die Variablität rein. Ein Beispiel: Die regexp /abc/ besteht nur aus Literalen: sie schlägt nur bei abc zu, Abc zB wird ignoriert, da das große A nicht dem kleinen a entspricht.+Regexp setzen sich zusammen aus Literalen und aus Metazeichen. Literale sind Buchstaben, auf die exakt geprüft werden soll und die Metazeichen bringen die Variablität rein. Ein Beispiel: Die regexp /abc/ besteht nur aus Literalen: sie schlägt nur bei abc zu, Abc zB wird ignoriert, da das große A nicht dem kleinen a entspricht.
  
  Die - für uns vorerst wichtigen - Metazeichen sind:  Die - für uns vorerst wichtigen - Metazeichen sind:
  
- 1.Allgemein: +1.Allgemein: 
-^ steht für den Textanfang. /^abc/ ist nur dann wahr, wenn der Text mit abc beginnt. +  ^ steht für den Textanfang. /^abc/ ist nur dann wahr, wenn der Text mit abc beginnt. 
-$ steht für das Textende. /abc$/ ist nur dann wahr, wenn der Text mit abc endet. +  $ steht für das Textende. /abc$/ ist nur dann wahr, wenn der Text mit abc endet. 
-\b steht für eine Wortgrenze. abc ist wahr, wenn abc als eigenes Wort im Text auftaucht ("abc def ...") und falsch, wenn abc nur Teil eines Wortes ist ( "abcd ef..." ) +  \b steht für eine Wortgrenze. abc ist wahr, wenn abc als eigenes Wort im Text auftaucht ("abc def ...") und falsch, wenn abc nur Teil eines Wortes ist ( "abcd ef..." ) 
-\B ist das Gegenteil von \b. abc ist falsch, wenn abc als eigenes Wort im Text auftaucht ("abc def ...") und wahr, wenn abc nur Teil eines Wortes ist ( "abcd ef..." ) +  \B ist das Gegenteil von \b. abc ist falsch, wenn abc als eigenes Wort im Text auftaucht ("abc def ...") und wahr, wenn abc nur Teil eines Wortes ist ( "abcd ef..." ) 
-| dient als oder-Verknüpfung. /abc|xyz/ ist sowohl bei abc als auch bei xyz wahr.+  | dient als oder-Verknüpfung. /abc|xyz/ ist sowohl bei abc als auch bei xyz wahr.
  
- 2. Wildcards, Suchbereiche: +2. Wildcards, Suchbereiche: 
-. ( der Punkt ) steht für ein beliebiges Zeichen: /ab.c/ ist wahr, wenn im Text zB abxc, ab1c oder ab c steht. Es ist nicht wahr, wenn zwischen ab und c mehr als ein Zeichen steht. +  . ( der Punkt ) steht für ein beliebiges Zeichen: /ab.c/ ist wahr, wenn im Text zB abxc, ab1c oder ab c steht. Es ist nicht wahr, wenn zwischen ab und c mehr als ein Zeichen steht. 
-[...] Eckige Klammern definieren einen Zeichenbereich, der für ein Zeichen im Originaltext steht. HÄH? OK, ein Beispiel: Wenn zB nach einem Herrn Maier gesucht wird, aber nicht sicher ist, ob er im Text nun Maier oder Meier geschrieben wurde, kann man ihn mittels /M[ae]ier/ suchen: Die regexp gibt sowohl beim "Meier" als auch beim "Maier" wahr zurück. +  [...] Eckige Klammern definieren einen Zeichenbereich, der für ein Zeichen im Originaltext steht. HÄH? OK, ein Beispiel: Wenn zB nach einem Herrn Maier gesucht wird, aber nicht sicher ist, ob er im Text nun Maier oder Meier geschrieben wurde, kann man ihn mittels /M[ae]ier/ suchen: Die regexp gibt sowohl beim "Meier" als auch beim "Maier" wahr zurück.
- Es können auch ganze Zeichen-Bereiche abgedeckt werden:+
  
- - [A-Z] trifft auf alle Großbuchstaben zu +Es können auch ganze Zeichen-Bereiche abgedeckt werden: 
- [a-z] trifft auf alle Kleinbuchstaben zu + [A-Z] trifft auf alle Großbuchstaben zu 
- [0-9] trifft auf alle Ziffern zu+ [a-z] trifft auf alle Kleinbuchstaben zu 
 + [0-9] trifft auf alle Ziffern zu
  
-^ Jetzt wird's etwas irritierend, weil - den hatten wir doch gerade schon. Innerhalb der eckigen Klammern kommt dem ^ nämlich die Funktion des Negierens zu - die regexp gibt wahr zurück, wenn der Zeichenbereich nicht zutrifft. Auch hier ein Beispiel: /1234[^5]/  findet alle Zeichenfolgen 1234, denen keine 5 folgt.+  * ^ Jetzt wird's etwas irritierend, weil - den hatten wir doch gerade schon. Innerhalb der eckigen Klammern kommt dem ^ nämlich die Funktion des Negierens zu - die regexp gibt wahr zurück, wenn der Zeichenbereich nicht zutrifft. Auch hier ein Beispiel: /1234[^5]/  findet alle Zeichenfolgen 1234, denen keine 5 folgt.
  
  3. Wiederholungsangaben:  3. Wiederholungsangaben:
  Wiederholungsangaben machen die Suchbereiche und Wildcards noch flexibler. Sie werden direkt hinter der betroffenen Klammer bzw dem Punkt/Stern angegeben.  Wiederholungsangaben machen die Suchbereiche und Wildcards noch flexibler. Sie werden direkt hinter der betroffenen Klammer bzw dem Punkt/Stern angegeben.
-* steht für beliebig oft oder gar nicht. Beispiel: /abc[x]*d/ ist wahr, wenn zwischen abc und d gar nichts oder ein oder mehrere x stehen - es ist falsch, wenn irgendein anderes Zeichen dazwischen steht. +  * * steht für beliebig oft oder gar nicht. Beispiel: /abc[x]*d/ ist wahr, wenn zwischen abc und d gar nichts oder ein oder mehrere x stehen - es ist falsch, wenn irgendein anderes Zeichen dazwischen steht. 
-+ hat im Prinzip die gleiche Wirkung wie das *, nur das in diesem Fall die Suchzeichen mindestens einmal auftreten müssen. Beispiel: /.+/ ist wahr, wenn mindestens ein beliebiges Zeichen vorhanden ist. +  + hat im Prinzip die gleiche Wirkung wie das *, nur das in diesem Fall die Suchzeichen mindestens einmal auftreten müssen. Beispiel: /.+/ ist wahr, wenn mindestens ein beliebiges Zeichen vorhanden ist. 
-? bedeutet: Kann da sein, muss aber nicht. Im Prinzip also wieder wie das *, nur das hier die maximale Trefferlänge 1 beträgt. +  ? bedeutet: Kann da sein, muss aber nicht. Im Prinzip also wieder wie das *, nur das hier die maximale Trefferlänge 1 beträgt. 
-{n1,n2} schränkt den Grössenspielraum ein: n1 steht für die Mindestanzahl Treffer, n2 für die Maximalanzahl. Die Maximalanzahl kann bB weggelassen werden. Mit Komma ( "{n1,}" ) wird die regexp wahr, wenn die Fundstelle mindestens n1 Zeichen lang ist. Ohne Komma ( "{n1}" ) wird sie wahr, wenn genau n1 Zeichen gefunden werden.+  {n1,n2} schränkt den Grössenspielraum ein: n1 steht für die Mindestanzahl Treffer, n2 für die Maximalanzahl. Die Maximalanzahl kann bB weggelassen werden. Mit Komma ( "{n1,}" ) wird die regexp wahr, wenn die Fundstelle mindestens n1 Zeichen lang ist. Ohne Komma ( "{n1}" ) wird sie wahr, wenn genau n1 Zeichen gefunden werden.
  
  4. Maskieren  4. Maskieren
perl.1452769725.txt.gz · Zuletzt geändert: 14.01.2016 12:08 von marc