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/04/27 14:02] – [Regular Expressions] 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.
 +
 +===== 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
 +  
 +
 +===== Python =====
 +[[Python]] unterstützt die POSIX-Zeichenklassen wie ''[:alpha:]'' oder ''[:alnum:]'' nicht.
 +Dafür kennt Python special sequences:
 +^special sequence ^Bedeutung ^
 +|''\d'' |beliebige Ziffer ''[0-9]'' |
 +|''\D'' |beliebiges Zeichen, das keine Ziffer ist |
 +|''\w'' |beliebiges Zeichen aus ''[a-zA-Z0-9_]'' |
 +|''\W'' |beliebiges Zeichen, das nicht in ''[a-zA-Z0-9_]'' enthalten ist|
 +|''\s'' |beliebiges Leerzeichen|
 +|''\S'' |beliebiges Nicht-Leerzeichen|
 +
 +  * [[http://pythex.org/|Pythex]] Onlinetester mit Cheatsheet
 +  * [[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 =====
 +In [[sed]] müssen alle Quantoren außer ''*'' escaped werden:
 +^Quantor^Bedeutung^
 +|''*''|beliebig oft (auch keinmal)|
 +|''\+''|mindestens einmal, aber auch mehrfach|
 +|''\?''|null oder einmal|
 +|''\{n\}''|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.1430136161.txt.gz · Zuletzt geändert: 2015/04/27 14:02 von olli