Main /

Regular Expressions

Allgemein

Knowledge Base

Virtualisierung Emulation

Technik und Wissen

Community

Privat

%center%[[http://validator.w3.org/check?uri=referer|http://www.w3.org/Icons/valid-xhtml10.png]]%%

Regular Expressions

Regular Expressions / Reguläre Ausdrücke / Regexp

Zeichen

Zeichenfolge

Beschreibung

Beispiel

alle Zeichen außer [\^$.|?*+()

Alle Zeichen außer den gelisteten Sonderzeichen finden genau dieses eine Zeichen

a findet a

\ (backslash) gefolgt von einem dieser Zeichen: [\^$.|?*+()

Ein Backslash (Escapezeichen) unterdrückt die spezielle Bedeutung von Sonderzeichen

\+ findet +

\xFF wobei FF eine 2-stellige Hex-Zahl ist

Findet das Zeichen mit dem entsprechenden ASCII/ANSI Wert, in Abhängigkeit von der verwendeten Codepage. Kann in Zeichenklassen verwendet werden

\xA9 findet @ bei Verwendung der Latin-1 Codepage

\n, \r und \t

Findet LF, CR bzw. TAB-Zeichen

\r\n findet einen DOS/Windows Zeilenumbruch

Zeichenklassen (Character Classes) oder Zeichenmengen (Character Sets) [abc]

Zeichenfolge

Beschreibung

Beispiel

[ (öffnende eckige Klammer)

Beginnt eine Zeichenklasse. Eine Zeichenklasse findet alle Zeichen die durch sie definiert werden. Die Regeln in diesem Abschnitt gelten nur innerhalb einer Zeichenklasse, die anderen Regeln gelten dort nicht, außer \n, \r, \t und \xFF

 ./.

Alle Zeichen außer ^-]\

Alle Zeichen außer die aufgeführten Sonderzeichen stehen für ein gültiges Fundzeichen innerhalb der Klasse

[abc] findet a, b oder c

\ (backslash) gefolgt von einem dieser Zeichen: ^-]\

Ein Backslash (Escapezeichen) unterdrückt die spezielle Bedeutung von Sonderzeichen

[\]\^] findet ^ oder ]

- (Minuszeichen)

Bezeichet eine Reihe von Zeichen, bzw. ein Minuszeichen wenn es direkt nach der öffnenden eckigen Klammer folgt

[a-zA-Z0-9] findet jeden Buchstaben außer Umlaute und jede Ziffer

^ (Hochzeichen)

Negiert die Zeichenklasse, findet also alle Zeichen, die nicht in der Klasse vorkommen. Wenn es nicht direkt nach [ steht, bedeutet es ein Hochzeichen (sich selbst also)

[^a-d] findet z.B. x (jedes Zeichen das nicht a, b, c oder d ist.

\d, \w und \s

Kurzzeichen für vordefinierte Zeichenklassen: \d steht für Ziffern 0-9, \w steht für alphanumerische Zeichen (vorsicht, meist ohne Umlaute!) und \s steht für whitespace (Leerzeichen)

[\d\s] findet entweder eine Ziffer oder ein Leerzeichen.

\D, \D und \D

Wie oben, nur negiert. Sollten außerhalb von Zeichenklassenverwendet werden. (technisch gesehen können sie innerhalb verwendet werden, das ist jedoch ziemlich verwirrend)

\D findet ein Zeichen, dass keine Ziffer ist.

Der Punkt (.)

Zeichenfolge

Beschreibung

Beispiel

. (Punkt)

Findet jedes einzelne Zeichen außer den Zeilenumbruchszeichen /r und /n. Die meisten regex-Implementieren können per Option so konfiguriert werden, dass die Zeilenumbrüche auch durch den Punkt gefunden werden.

. findet z.B. x oder (fast) jedes andere Zeichen

Anker (Stringanfang und -ende)

Zeichenfolge

Beschreibung

Beispiel

^ (Hochzeichen)

Bedeutet dass das nachfolgende Pattern nur am Stringanfang gilt. Die meisten regex-Inplementierungen bieten eine Option, dass ^ auch die Position nach einem Zeilenumbruch abdeckt.

^. findet a in adc\ndef. Findet auch d im "Multi-Line" Modus.

$ (Dollarzeichen)

Bedeutet dass das nachfolgende Pattern nur am Stringende gilt. Die meisten regex-Inplementierungen bieten eine Option, dass $ auch die Position vor einem Zeilenumbruch abdeckt.

.$ findet f in adc\ndef. Findet auch c im "Multi-Line" Modus.

\A

Bedeutet dass das nachfolgende Pattern nur am Stringanfang gilt. Bedeutet nie das Zeichen nach einem Zeilenumbruch

\A. findet a in adc\ndef.

\Z

Bedeutet dass das nachfolgende Pattern nur am Stringende gilt. Bedeutet nie das Zeichen vor einem Zeilenumbruch

.\Z findet f in adc\ndef.

Wortgrenzen

Zeichenfolge

Beschreibung

Beispiel

\b

Bestimmt die Position zwischen einem alphanumerischen Zeichen und dem Gegenteil davon (also allen anderen Zeichen inkl. Space und Stringgrenzen). In der Praxis kann man damit Wortgrenzen erkennen. Das Bespiel findet das letzte Zeichen eines Wortes.

.\b findet c in abc.

\B

Bestimmt die Position zwischen zwei alphanumerischen Zeichen (\w\w) oder zwei nicht-alphanumerischen Zeichen (\W\W). In der Praxis kann man damit die Suche auf die Zeichen innerhalb von Wörtern beschränken.

\B.\B findet b in abc.

Alternativen

Zeichenfolge

Beschreibung

Beispiel

| (Pipe-Symbol)

Findet entweder die linke oder die rechte Seite des Pipe-Zeichens. Kann kaskadiert werden um mehr als zwei Alternativen zu verwenden

abc|def|xyz findet abc, def oder xyz

| (Pipe-Symbol)

Das Pipe-Zeichen hat die niedrigste Priorität aller Operatoren. Um nur Teile des Ausdrucks als Alernative zu verwenden muß man mit Klammern gruppieren.

abc(def|xyz) findet abcdef oder abcxyz

Ist noch lange nicht vollständig. Dranbleiben.

...tbc...

siehe auch

Links:

  • Referenz en Referenz, diente als Basis für diese Seite
  • Expresso - ein nettes Tool zum rumspielen mit Regexp. Läuft unter .NET (vielleicht bald auch unter Mono?)

zurück zu Programmierung

Frische Änderungen (All) | Edit SideBar Zuletzt geändert am 31.10.2006 07:48 Uhr Seite Bearbeiten | Seitenhistorie
Powered by PmWiki