Posts Tagged ‘RegEx’

.Net und reguläre Ausdrücke

17. Juli 2009

Für mich schon immer ein ebenso interessantes wie rätselhaftes Thema, da ich – vielleicht auch mangels intensiver Suche – noch nirgendwo eine vernünftige Beschreibung gefunden habe. Heute bin ich einigermaßen fündig geworden:
Verwendung z.B. Regex.IsMatch(input as String, pattern as string) as boolean
Ausführliche Info in der MSDN – Regular Expressions in ASP.Net (Erklärung + Beispiele) bzw. .NET Framework Regular Expressions.
Jedenfalls geht’s grundsätzlich so, dass man ein Zeichen bzw. eine Zeichenkette nimmt und danach mit speziellen Ausdrücken festlegt, wie oft sie vorkommt.

Quantifiers * ? + { } ,

  • * bedeutet „kann 0 oder n Mal vorkommen“
  • + bedeutet „kann 1 oder n Mal vorkommen“
  • ? bedeutet „kann 0 oder 1 Mal vorkommen“
  • {n} bedeutet „kommt genau n Mal vor“
  • {n,} bedeutet „kommt n oder mehr Mal vor“
  • {,n} bedeutet „kommt n oder weniger Mal vor“

Metacharacters $ ^ . [ ( | ) ] \

  • \ hebt die Bedeutung von Sonderzeichen (=Quantifiers/Metacharacters) auf
  • ^ bedeutet „Anfang des Strings/der Zeile“; ACHTUNG: andere Bedeutung bei Character Classes!
  • $ bedeutet „Ende des Strings/der Zeile“
  • | logisches Oder
  • () Gruppierung von Patterns
  • . Genau ein Zeichen
  • [] siehe Character Classes

Character Classes [ ]
… versteht man am besten anhand von Beispielen:

  • [0123456789] oder [0-9] bedeutet „eins dieser Zeichen“
  • [^0123456789] bedeutet „keins dieser Zeichen“
  • [0-9a-zA-Z] alle alphanumerischen Zeichen
  • [a-z-[aeiou]] alle kleinen Konsonanten
  • Predefined Set Metacharacters; z.B.
    • \f ist ein FormFeed
    • \n ist ein NewLine
    • \r ist ein Carriage Return
    • 40 ist ein Space (-> ASCII-Code)
    • \t ist ein Tab
    • \s ist jedes White-Space Zeichen
    • \S ist jedes Non-White-Space Zeichen
    • \d ist jede Zahl = [0-9]
    • \D ist jede Nicht-Zahl = [^0-9]
    • \p{name} Unicode-Zeichenklassen/-kategorien

Das sollten die wichtigsten sein – ansonsten unter dem Link nachschauen, da gibt es DetailInfo und auch noch CodeSamples zu den Regex-Methoden.
Ich hoffe, ich habe das alles richtig verstanden, sonst werden sich bald ein paar lustige Effekte in meinen Anwendungen einstellen 🙂

Beispiele

  • eMailAdresse: „^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$“
Advertisements