Benutzer-Werkzeuge

Webseiten-Werkzeuge


regular_expressions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
regular_expressions [2015/07/21 11:32] – [Python] olliregular_expressions [2024/09/13 06:42] (aktuell) – [PHP (PCRE)] olli
Zeile 1: Zeile 1:
 ====== Regular Expressions ====== ====== Regular Expressions ======
 Eine Regular Expression (abgekürzt RegExp, oder RegEx) ist eine Zeichenkette, die eine Mengen von Zeichenketten mit Hilfe von syntaktischen Regeln beschreibt. Eine Regular Expression (abgekürzt RegExp, oder RegEx) ist eine Zeichenkette, die eine Mengen von Zeichenketten mit Hilfe von syntaktischen Regeln beschreibt.
 +
 +===== Zeichenauswahl =====
 +^RegExp ^Bedeutung^
 +|''[abc]'' |eines der Zeichen ''a'', ''b'' oder ''c'' |
 +|''[0-2]'' |eine Ziffer von ''0'' bis ''2''|
 +|''[^a]'' |ein beliebiges Zeichen außer ''a''|
 +
 +==== POSIX-Zeichenklassen ====
 +^RegExp ^Bedeutung^
 +|''[:cntrl:]'' |Steuerzeichen|
 +|''[:print:]'' |Druckbare Zeichen: ''[:alnum:]'', ''[:punct:]'' und Leerzeichen|
 +|''[:space:]'' |Whitespace: Horizontaler und vertikaler Tabulator, Zeilen- und Seitenvorschub, Wagenrücklauf und Leerzeichen|
 +|''[:blank:]'' |Leerzeichen oder Tabulator|
 +|''[:graph:]'' |Graphische Zeichen: ''[:alnum:]'' oder ''[:punct:]''|
 +|''[:punct:]'' |Satzzeichen wie: ''!'' ''"'' ''#'' ''$'' ''%'' ''&'' ''''' ''('' '')'' ''*'' ''+'' '','' ''-'' ''.'' ''/'' '':'' '';'' ''<'' ''='' ''>'' ''?'' ''@'' ''['' ''\'' '']'' ''%%^%%'' ''_'' ''`'' ''{'' ''%%|%%'' ''}'' ''%%~%%'' |
 +|''[:alnum:]'' |Alphanumerische Zeichen: ''[:alpha:]'' oder ''[:digit:]''|
 +|''[:xdigit:]'' |Hexadezimale Ziffern: ''0'' bis ''9'', ''A'' bis ''F'', ''a'' bis ''f''|
 +|''[:digit:]'' |Die Ziffern ''0'' bis ''9''|
 +|''[:alpha:]'' |Buchstaben: ''[:lower:]'' oder ''[:upper:]''|
 +|''[:lower:]'' |Kleinbuchstaben|nt
 +|''[:upper:]'' |Großbuchstaben|
 +
 +<WRAP info round>
 +Die POSIX-Zeichenklassen müssen innerhalb einer Zeichenauswahl ''[]'' stehen.
 +Beispiel: ''%%[[%%:alnum:%%]]%%''
 +</WRAP>
 +
 +===== Quantoren =====
 +^RegExp ^Bedeutung^
 +|''?'' |null- oder einmal|
 +|''+'' |mindestens einmal (entspricht ''{1,}'')|
 +|''*'' |beliebig oft (auch keinmal) (entspricht ''{0,}'')|
 +|''{n}'' |exakt n-mal (entspricht ''{n,n}'')|
 +|''{min,}'' |mindestens min-mal|
 +|''{min,max}'' |mindestens min-mal, max-mal|
 +|''{0,max}'' |maximal max-mal|
 +
 +===== Spezielle Zeichen =====
 +^RegExp ^Bedeutung^
 +|''.'' |beliebiges Zeichen|
 +|''\'' |Escapezeichen|
 +|''^'' |Zeilenanfang|
 +|''$'' |Zeilen- oder Stringende|
 +
 +===== Unicode =====
 +^RegExp ^Bedeutung^
 +|''\p{L}'' |beliebiges Unicodezeichen aus der Kategorie Buchstabe|
 +|''\P{L}'' |beliebiges Unicodezeichen, außer aus der Kategorie Buchstabe|
 +|''\p{n}'' |beliebige Unicodeziffer|
 +|''\P{n}'' |beliebiges Unicodezeichen, außer beliebige Unicodeziffer|
 +|''\uFFFF'' | Unicodezeichen mit dem Codepoint U+FFFF| 
 +
 +<WRAP info round>
 +Dies sind nur die häufigsten RegExps für Unicode, für weitere Informationen siehe [[https://www.regular-expressions.info/unicode.html| RegExps für Unicode]].
 +</WRAP>
 +
 +
 +
 +===== Gruppen und Backreferences =====
 +^RegExp ^Bedeutung^
 +|''()'' |Gruppe|
 +|''\n'' |Zugriff auf n-te Gruppe|
 +
  
 Die unterstützen Features unterscheiden sich je nach Implementierung/Sprache. Die unterstützen Features unterscheiden sich je nach Implementierung/Sprache.
  
 ===== PHP (PCRE) ===== ===== PHP (PCRE) =====
 +  * Einzelne Unicodezeichen werden nicht als ''\uFFFF'' sondern als ''\x{FFFF}'' kodiert.
 +  * Es werden POSIX-Zeichenklassen und "special sequences" unterstützt.
 +<WRAP info round>
 +Seit Version 7.3 nutzt [[PHP]] [[https://php.watch/versions/7.3/pcre2|PCRE2 statt PCRE]].
 +Dies bringt eine strengere Prüfung der Pattern mit sich.
 +Das sonstige Verhalten soll weitgehend identisch sein.
 +</WRAP>
 +
   * [[https://regex101.com/#php|regular expressions 101 (PHP)]] Tester, erzeugt textuelle Erklärung der Regexp   * [[https://regex101.com/#php|regular expressions 101 (PHP)]] Tester, erzeugt textuelle Erklärung der Regexp
      
Zeile 21: Zeile 92:
   * [[http://pythex.org/|Pythex]] Onlinetester mit Cheatsheet   * [[http://pythex.org/|Pythex]] Onlinetester mit Cheatsheet
   * [[https://regex101.com/#python|regular expressions 101 (Python)]] Tester, erzeugt textuelle Erklärung der Regexp     * [[https://regex101.com/#python|regular expressions 101 (Python)]] Tester, erzeugt textuelle Erklärung der Regexp  
 +
 +===== procmail =====
 +[[procmail]] verwendet eine eigene Implementierung von regulären Ausdrücken. Sie unterstützt die Quantoren vom Typ ''{n,m}'' nicht. 
  
 ===== sed ===== ===== sed =====
Zeile 31: Zeile 105:
 |''\{i,n\}''|i bis n-mal| |''\{i,n\}''|i bis n-mal|
  
 +Auch Gruppen ''()'' müssen escaped werden: ''\(\)''
 +
 +<WRAP info round>
 +Beim Escaping muss beachtet werden, dass Ausdrücke, die in doppelten Anführungszeichen (''"'') stehen, bereits von der Shell ausgewertet werden. Daher muss ggf. doppelt escaped werden.
 +Ausdrücke, die in einfachen Anführungszeichen (''''') werden von Shells wie [[bash]] dagegen nicht ausgewertet und daher auch nicht doppelt escaped werden.
 +</WRAP>
 ===== Links ===== ===== Links =====
   * [[http://regexlib.com|Regexlib]] Bibliothek mit Regex   * [[http://regexlib.com|Regexlib]] Bibliothek mit Regex
 +
  
regular_expressions.1437471135.txt.gz · Zuletzt geändert: 2015/07/21 11:32 von olli