Reguläre Ausdrücke Beispiele

Regular-Expression enthält den Syntax.


Einige gebräuchliche Suchmuster im VB-Syntax. Unterstützung beachten, einige Codes müssen für VB angepaßt werden, da nicht alle RegEx Funktionen unterstützt werden.

Bei der Konstruktion von komplizierteren Reguläre Ausdrücke baut man diese am besten wie mathematische Formeln Segment für Segment zusammen.
Die meisten Suchmuster sind auf ein Wort oder ganze Zeile abgegrenzt, und mit () umschlossen damit das ganze gefundene Suchmuster wenn nötig zB bei einer Ersetzung mit $ wiederverwendet werden kann.

:!: Für VBScript Unicode und RegEx Fehler 128-159 beachten.

Je nach Software kann die Verfügbarkeit und der Syntax variieren.

Je nach Software müssen Stringbegrenzer "" '' angepaßt oder mit \" \' Escape geschützt werden.

Je nach Software kann es zu Problemen mit speziellen Zeichen oder Escape kommen, zB "\<" "\\<". Um sicherzustellen das die Mustersuche wie erwartet funktioniert, ist es sinnvoll diese sorgfältig zu testen, und einen Test-String zusammenzustellen um viele Varianten und Ausnahmesituationen zu prüfen.

Grundsätzlich muß man bei RegEx beachten, daß wenn die Suche in Text mit Strings "" oder Kommentaren durchgeführt wird, es zu Fehler kommen kann wenn Suchmuster innerhalb von ungewollten Textbereichen gefunden werden. Die Absicherung gegen solche Fehler benötigt dann meistens komplizierte Suchmuster. Auch können einige komplizierte Lexer- und Syntax-Suchmuster und Datenprüfungen nur sinnvoll mit zusätzlichem Code ermöglicht werden, RegEx kann viel aber nicht alles.

Farben

(Die Einfärbung kann fehlerhaft sein.)

[ - ]                        ~~ Zeichenklassen und Wortklassen
.
\d \D \w \W \s \S
 
( | )                        ~~ Varianten
(?:
(?<= (?<!                    ~~ Look-around
(?= (?!
(?(?=                        ~~ Bedingungen
 
{ }                          ~~ Wiederholungen
* + ?
 
^ $                          ~~ Zeichenort und Begrenzer
\b \B \A \z \Z \G \< \>
 
\\ \t \n \r \v \f \a \e      ~~ Escape Zeichen
 
\x12 \u1234                  ~~ Zeichencode
 
\1 \2 \3 \4 \5 \6 \7 \8 \9   ~~ Rückwärtsreferenzen
        

Namen

~~ Name der mit einem Buchstaben beginnen muß, und Danach auch beliebige "_"-Unterstrich und Zahlen erlaubt. (zB Bezeichner¦Variabelnamen)
    Name = "^([a-zA-Z][a-zA-Z0-9_]*)$"
 
~~ Ein Namen der ein Bindestrich erlaubt, Text-Segmente müssen mindestens 2 Zeichen lang sein und nur der erste Buchstabe darf groß geschrieben werden.
    Name = "^([a-zA-Z][a-z]+)$"
 
~~ Zusätzlich mit mehreren Bindestrinchen
    Name = "^([a-zA-Z][a-z]+)(([ -][a-zA-Z][a-z])+)$"

Worte

~~ Wort in deutsch
    Wort = "\b([a-zA-Z0-9ÄÖÜäöüß]+)\b"
 
~~ Satz in deutsch
    Satz = "^([a-zA-Z0-9äöüÄÖÜß\+\-\*/_ ]*?[\.\?:!])$"

Zahlen

Für Zahlen kann \b nicht als Wortgrenze eingesetzt werden, da -+ als Wortgrenze betrachtet werden. Die Wortgrenze wird mit Look-around Bedingungen festgelegt (?<![\w\-\+\.])WORT(?![\w\-\+\.])

~~ Positive Ganzzahl, 1 bis 999999999
    Zahl = "(?<![\w\-\+\.])([1-9][0-9]{0,8})(?![\w\-\+\.])"
 
~~ Ganzzahl, 0 oder 1 bis 999999999 mit Vorzeichen
    Zahl = "(?<![\w\-\+\.])(0|[\-\+]?[1-9][0-9]{0,8})(?![\w\-\+\.])"
 
~~ Bruchzahl -0.123
    Zahl = "(?<![\w\-\+\.])(([\+\-]?[0-9]+)(\.[0-9]+)?)(?![\w\-\+\.])"
 
~~ Float -0.123E+10
~~  Findet:       "0", "+10", "+10.00", "+10.00E+10"
~~  Findet nicht: "+0", "01", "10.", "10.E+10", "10E+1.0"
    Zahl = "(?<![\w\-\+\.])((0|[\-\+]?([0-9]|[1-9][0-9]*)?\.[0-9]+|[\-\+]?[1-9][0-9]*)([eEdD][\-\+]?[0-9]+)?)(?![\w\-\+\.])"

Zeit

~~ Stunden, (00 bis 23)
    Stunden = "\b([01][0-9]|2[0-3])\b"
 
~~ Minuten Sekunden, (00 bis 59)
    MinutenSekunden = "\b([05][0-9])\b"
 
~~ Stunden:Minuten:Sekunden, (hh:mm:ss 00:00:00 Bis 23:59:59)
    Minute = "^" & Stunden & ":" & MinutenSekunden & ":" & MinutenSekunden & "$"

Datum

Für eine exakte Erkennung der Wochentage im Monat (28 30 31) ist ein Code Notwendig.

~~ Jahr, 1900 bis 2019
    Jahr = "\b(19[0-9][0-9]|20[01][0-9])\b"
 
~~ Monat, 1 oder 01 bis 12
    Monat = "\b(0?[1-9]|1[0-2])\b"
 
~~ Tag, 1 oder 01 bis 31
    Tag = "\b(0?[1-9]|[12][0-9]|3[01])\b"
 
~~ Jahr-Monat-Tag (1900-01-01 bis 2019-12-31)
    Datum = "^" & Jahr & "[\-\./\\]" & Monat & "[\-\./\\]" & Tag & "$"

Datei

~~ Dateiname, Alls Zeichen erlaubt außer "\x00-\x19 "*./:<>?\|" (" " und "." ist nur erlaubt wenn ein weiteres Zeichen folgt.)
~~  Findet:       "Datei1", "Datei2.ext", "Datei1.Datei2.ext", " D atei1  D atei2 .ext"
~~  Findet nicht: "Datei1/Datei2", " ", " ."
    Dateiname = "^(([ \.]*([^\x00-\x19 \.\"\*:<>\?\|/\\])+[ \.]*)*)$"
 
~~ Dateiname und Typen
    Dateiname = "^(([ \.]*([^\x00-\x19 \.\"\*:<>\?\|/\\])+[ \.]*)*)\.(exe|dll|ocx)$"
 
~~ Pfad, mit Laufwerksbuchstaben und / am Ende
~~  Findet:       "C:\Pfad1\Pfad2\", "C:/Pfad1/Pfad2/", "C:/ P fad1 / P fad2 /"
~~  Findet nicht: "C:\Pfad1\\Pfad2\", "C:\Pfad1\Pfad2"
    Pfad = "^([a-zA-Z]:[/\\](([ \.]*(([^\x00-\x19 \.\"\*:<>\?\|/\\])+[ \.]*)*[/\\])*))$"

IP

IP-Adressen bestehen aus vier Zahlen,
das erste und letzte von 1 bis 255,
die beiden mittleren von 0 bis 255,
die Zahlen sind jeweils durch einen Punkt voneinander getrennt

~~ Zahl 1 bis 255
    IP14 = "\b(0?0?[1-9]|0?[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b"
 
~~ Zahl 0 bis 255
    IP23 = "\b(0?0?[0-9]|0?[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b"
 
~~ IP (1.0.0.1 bis 255.255.255.255)
    IP = "^" & IP14 & "\." & IP23 & "\." & IP23 & "\." & IP14 & "$"

Oder auch alle Zahlen von 0 - 255 oder 000 - 255, wenn alle IPs eingeschlossen werden sollen.

~~ Zahl 0 bis 255
    IP1234 = "\b(0?0?[0-9]|0?[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b"
 
~~ IP (0.0.0.0 bis 255.255.255.255 oder 000.000.000.000 bis 255.255.255.255)
    IP = "^" & IP1234 & "\." & IP1234 & "\." & IP1234 & "\." & IP1234 & "$"

URL

~~ http:// und https://,  wenn vorhanden
    http = "\b((?:https?|ftp)://)?"
 
~~ www., wenn vorhanden
    www = "\b(www\.)?"
 
~~ Domain, Name mit Buchstaben Beginnend und danach mit einem "." oder "-" unterbrochenen Buchstaben
    Domain = "\b([a-zA-Z](?:[\.\-]?[a-zA-Z0-9])*)"
 
~~ TLD Top-Level-Domain, ein Buchstabentext 2 bis 8 Zeichen lang  (ohne TopLevelDomain Prüfung)
    TLD = "\b(\.(?:af|ax|al|dz|as|ad|ao|ai|aq|ag|ar|am|aw|au|at|az|bs|bh|bd|bb|by|be|bz|bj|bm|bt|bo|ba|bw|bv|br|io|bn|bg|bf|bi|kh|cm|ca|cv|ky|cf|td|cl|cn|cx|cc|co|km|cg|cd|ck|cr|ci|hr|cu|cy|cz|dk|dj|dm|do|ec|eg|sv|gq|er|ee|et|fk|fo|fj|fi|fr|gf|pf|tf|ga|gm|ge|de|gh|gi|gr|gl|gd|gp|gu|gt|gg|gn|gw|gy|ht|hm|va|hn|hk|hu|is|in|id|ir|iq|ie|im|il|it|jm|jp|je|jo|kz|ke|ki|kp|kr|kw|kg|la|lv|lb|ls|lr|ly|li|lt|lu|mo|mk|mg|mw|my|mv|ml|mt|mh|mq|mr|mu|yt|mx|fm|md|mc|mn|ms|ma|mz|mm|na|nr|np|nl|an|nc|nz|ni|ne|ng|nu|nf|mp|no|om|pk|pw|ps|pa|pg|py|pe|ph|pn|pl|pt|pr|qa|re|ro|ru|rw|sh|kn|lc|pm|vc|ws|sm|st|sa|sn|cs|sc|sl|sg|sk|si|sb|so|za|gs|es|lk|sd|sr|sj|sz|se|ch|sy|tw|tj|tz|th|tl|tg|tk|to|tt|tn|tr|tm|tc|tv|ug|ua|ae|gb|us|um|uy|uz|vu|ve|vn|vg|vi|wf|eh|ye|zm|zw|com|edu|gov|int|mil|net|org|biz|info|name|pro|aero|coop|museum|arpa))"
 
~~ Verzeichnis
    Pfad = "\b(/(?:[\w\-\+\.]+/)*)"
 
~~ Datei
    Datei = "\b((?:[\w\-\+\.\?&=%]+)*)"
 
~~ Parameter
    Parameter = "\b(\?(?:[\w\-\+\.&=%]+)*)"
 
~~ URL, Dies ist keine Syntaxprüfung für ein URL, sondern nur ein Parser für die Informationsfragmente
~~  https://www.domain1.domain2.ch/pfad1/pfad2/datei.html?par1=test&par2=test%202
~~  \1 = "https://"
~~  \2 = "www."
~~  \3 = "domain1.domain2"
~~  \4 = ".ch"
~~  \5 = "/pfad1/pfad2/"
~~  \6 = "datei.html"
~~  \7 = "?par1=test&par2=test%202"
    URL = "^" & http & www & Domain & TLD & Pfad & Datei & Parameter & "$"

EMail

~~ EMail-Adresse (ohne TopLevelDomain Prüfung)
    EMail = "^([a-zA-Z][\w\.\-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.\-]*[a-zA-Z0-9]\.[a-zA-Z]{2,8})$"
 
~~ EMail-Adresse (mit TopLevelDomain Prüfung)
    EMail = "^([a-zA-Z][\w\.\-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.\-]*[a-zA-Z0-9]\.(af|ax|al|dz|as|ad|ao|ai|aq|ag|ar|am|aw|au|at|az|bs|bh|bd|bb|by|be|bz|bj|bm|bt|bo|ba|bw|bv|br|io|bn|bg|bf|bi|kh|cm|ca|cv|ky|cf|td|cl|cn|cx|cc|co|km|cg|cd|ck|cr|ci|hr|cu|cy|cz|dk|dj|dm|do|ec|eg|sv|gq|er|ee|et|fk|fo|fj|fi|fr|gf|pf|tf|ga|gm|ge|de|gh|gi|gr|gl|gd|gp|gu|gt|gg|gn|gw|gy|ht|hm|va|hn|hk|hu|is|in|id|ir|iq|ie|im|il|it|jm|jp|je|jo|kz|ke|ki|kp|kr|kw|kg|la|lv|lb|ls|lr|ly|li|lt|lu|mo|mk|mg|mw|my|mv|ml|mt|mh|mq|mr|mu|yt|mx|fm|md|mc|mn|ms|ma|mz|mm|na|nr|np|nl|an|nc|nz|ni|ne|ng|nu|nf|mp|no|om|pk|pw|ps|pa|pg|py|pe|ph|pn|pl|pt|pr|qa|re|ro|ru|rw|sh|kn|lc|pm|vc|ws|sm|st|sa|sn|cs|sc|sl|sg|sk|si|sb|so|za|gs|es|lk|sd|sr|sj|sz|se|ch|sy|tw|tj|tz|th|tl|tg|tk|to|tt|tn|tr|tm|tc|tv|ug|ua|ae|gb|us|um|uy|uz|vu|ve|vn|vg|vi|wf|eh|ye|zm|zw|com|edu|gov|int|mil|net|org|biz|info|name|pro|aero|coop|museum|arpa))$"

HTML-Tag

~~ Tag, mit beliebigem Inhalt
    HtmlTag = "<.+?>"
    HtmlTag = "<[^>]+?>"
 
~~ Tag, nur mit Buchstaben
    HtmlTag = "<[a-zA-Z][a-zA-Z0-9]*?>"
 
~~ Tag, mit Start- und End-Tag und der Möglichkeit den Inhalt dazwischen weiterzuverwenden
    HtmlTag = "<([a-zA-Z]\w*)\b[^>]*>(.*?)</\1>"
 
~~ Tag, mit Start- und End-Tag und der Möglichkeit den Inhalt dazwischen weiterzuverwenden, und Schutz gegen Verschachtelung
    HtmlTag = "<([a-zA-Z]\w*)\b[^>]*>((?:(?!</?\1[^>]*>).)*)</\1>"
 
~~ Alle HTML-Tag
    HtmlTag = "<(a|abbr|acronym|address|applet|area|b|base|basefont|bdo|big|blockquote|body|br|button|caption|center|cite|code|col|colgroup|dd|del|dfn|dir|div|dl|dt|em|fieldset|font|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|hr|html|i|iframe|img|input|ins|isindex|kbd|label|legend|li|link|map|menu|meta|noframes|noscript|object|ol|optgroup|option|p|param|pre|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|ul|var)(\b|[ \t]+[^>]*)>"
 
~~ Sichere Variante mit '" Schutz für <tag par1=">" par2='>'>
    HtmlTag = "<[a-zA-Z][a-zA-Z0-9]*(?:\b|[ \t]+(?:[^'"\n\r>]+(?:'[^'\n\r]*'|"[^"\n\r]*")*[^'"\n\r>]*)*)>"
 
~~ Sichere Variante mit '" Schutz für <tag par1=">" par2='>'>Text<tag> und Inhalt
~~ (In einem VB-Code müssen im String die " zu "" korrigiert werden, oder in PHP " zu \" )
~~ (Falls (?: in der verwendeten Software nicht unterstützt wird, muß (?: zu ( geändert werden, und die Nummerierung ändert sich dadurch)
~~  "<tag par1=">" par2='>'>Text<tag>"
~~  \1 = "<"
~~  \2 = "tag"
~~  \3 = " par1=">" par2='>'"
~~  \4 = ">"
~~  \5 = "Text"
~~  \6 = "</tag>"
    HtmlTag = "(<)([a-zA-Z][a-zA-Z0-9]*)(\b|[ \t]+(?:[^'"\n\r>]+(?:'[^'\n\r]*'|"[^"\n\r]*")*[^'"\n\r>]*)*)(>)(.*?)(</\2>)"
~~ HTML-Kommentar
    Kommentar = "(<!--[ \t]*)(.*?)([ \t]*-->)"
    Kommentar = "(<!--\s*)(.*?)(\s*-->)"
 
~~ HTML-Zeichencode
    ZeichenCode = "(&\#([0-9]{1,5}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{1,4});)"
 
    ZeichenCode = "(&(nbsp|quot|lt|gt|amp);)"
    ZeichenCode = "(&(iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml);)"

Diverses/Regular-Expression_Beispiele.txt · Zuletzt geändert: 2009/12/08 01:54 (Externe Bearbeitung)