Die Programmiersprache Ruby (German Edition)
vierbuchstabigen
# Palindrom
/(?\w)(?\w)\k\k/
/(?'first'\w)(?'second'\w)\k'second'\k'first'/ # Alternative Syntax
# Alternativen
/ruby|rube/ # Passt zu "ruby" oder "rube"
/rub(y|le)/ # Passt zu "ruby" oder "ruble"
/ruby(!+|\?)/ # "ruby" gefolgt von einem oder mehreren ! oder einem ?
# Anker: gibt Position zur Übereinstimmung an
/^Ruby/ # Passt zu "Ruby" am Anfang eines String oder einer internen Zeile
/Ruby$/ # Passt zu "Ruby" am Ende eines String oder einer Zeile
/\ARuby/ # Passt zu "Ruby" am Anfang eines String
/Ruby\Z/ # Passt zu "Ruby" am Ende eines String
/\bRuby\b/ # Passt zu "Ruby" an einer Wortgrenze
/\brub\B/ # \B ist eine Nicht-Wortgrenze:
# Passt zu "rub" in "rube" und "ruby", aber nicht einzeln
/Ruby(?=!)/ # Passt zu "Ruby", wenn ein Ausrufezeichen folgt
/Ruby(?!!)/ # Passt zu "Ruby", wenn kein Ausrufezeichen folgt
# Besondere Syntax mit Klammern
/R(?#comment)/ # Passt zu "R". Der Rest ist ein Kommentar.
/R(?i)uby/ # Groß-/Kleinschreibung wird ignoriert, während "uby" passt
/R(?i:uby)/ # Das Gleiche
/rub(?:y|le))/ # Nur Gruppieren, keine Backreference \1 erzeugen
# Die Option x ermöglicht Kommentare und ignoriert Leerraum
/ # Dies ist kein Ruby-Kommentar. Es ist Teil eines Regexp-Literals,
# wird aber ignoriert.
R # Passt zu einem einzelnen Buchstaben R
(uby)+ # gefolgt von einem oder mehreren "uby"s
\ # Verwende den Backslash für ein nicht zu ignorierendes Leerzeichen
/x # Schließender Begrenzer. Nicht die Option x vergessen!
Tabelle 9.2 fasst die Syntaxregeln zusammen, die gerade vorgestellt wurden.
Tabelle 9.2 Syntax für reguläre Ausdrücke
Syntax
Entspricht
Zeichenklassen
.
Passt zu jedem einzelnen Zeichen außer einem Zeilenumbruch. Mit der Option
m
passt es auch auf einen Zeilenumbruch.
[...]
Passt zu einem beliebigen der in den eckigen Klammern aufgeführten Zeichen.
[^...]
Passt zu jedem einzelnen Zeichen, das nicht in den eckigen Klammern steht.
\w
Passt zu Wortzeichen.
\W
Passt zu Zeichen, die nicht zu Wörtern gehören.
\s
Passt zu Leerraum. Entspricht
[ \t\n\r\f]
.
\S
Passt zu Nicht-Leerraum.
\d
Passt zu einer Ziffer. Entspricht
[0-9]
.
\D
Passt zu allem,was keine Ziffer ist.
Sequenzen, Alternativen, Gruppen und Referenzen
ab
Passt zu Ausdruck
a
gefolgt von Ausdruck
b
.
a
|
b
Passt entweder zu Ausdruck
a
oder Ausdruck
b
.
(
re
)
Gruppe: Gruppiert
re
zu einer einzelnen syntaktischen Einheit, die zusammen mit
*
,
+
,
?
,
|
und so weiter verwendet werden kann. Merkt sich zudem den passenden Text für eine spätere Verwendung.
(?:
re
)
Gruppiert wie
()
, merkt sich aber nicht den passenden Text.
(?<
name
>
re
)
Gruppiert einen Unterausdruck und merkt sich den Text, der zu
re
passt wie bei
()
, gibt dem Unterausdruck aber noch den Namen
name
. Ruby 1.9.
(?'
name
'
re
)
Ein benannter gespeicherter Text, wie oben. Einzelne Anführungszeichen können spitze Klammern optional um
name
ersetzen. Ruby 1.9.
\1...\9
Passt auch zu dem Text, der zum
n
-ten gruppierten Unterausdruck passte.
\10...
Passt auch zu dem Text, der zum
n
-ten gruppierten Unterausdruck passte, wenn es so viele vorherige Unterausdrücke gab. Ansonsten passt er zum Zeichen mit der angegebenen oktalen Kodierung.
\k<
name
>
Passt auch zu dem Text, der zur benannten Gruppe
name
passte.
\g<
n
>
Nutzt das Muster aus Gruppe
n
erneut.
n
kann ein Gruppenname oder eine Gruppennummer sein.
\g
versucht, die angegebene Gruppe nochmals zu finden, während eine normale Backreference genau zu dem Text passt, der beim ersten Mal passte. Ruby 1.9.
Wiederholung
Standardmäßig ist die Wiederholung »gierig« – es passen so viele Vorkommen wie möglich. Für »zurückhaltendes« Matchen fügen Sie einem
*
,
+
,
?
oder
{}
ein
?
an. Damit passen nur so wenige Vorkommen wie möglich, während der Rest des Ausdrucks immer noch passen kann. In Ruby 1.9 können Sie einem Quantifizierer ein
+
anhängen, um »gieriges« Verhalten ohne Backtracking zu erreichen .
re
*
Passt zu null oder mehr Vorkommen von
re
.
re
+
Passt zu einem oder mehreren Vorkommen von
re
.
re
?
Optional: Passt zu keinem oder einem Vorkommen von
re
.
re
{
n
}
Passt zu genau
n
Vorkommen von
re
.
re
{
n
,}
Passt zu
n
oder mehr Vorkommen von
re
.
re
{
n
,
m
}
Passt zu mindestens
n
und höchstens
m
Vorkommen von
re
.
Anker
Anker passen nicht zu Zeichen, sondern zu Positionen (ohne Breite) zwischen Zeichen, wodurch sie einen Match nur an einer bestimmten Position ermöglichen .
^
Passt zum Anfang der Zeile.
$
Passt zum Ende der
Weitere Kostenlose Bücher