Programmierung in Ruby

Der Leitfaden der Pragmatischen Programmierer

class Regexp
Parent: Object
Version: 1.6

Index:

compile escape last_match new quote == === =~ ~ casefold? kcode match source


Eine Regexp-Klasse enthält einen regulären Ausdruck, der verwendet wird, um ein Muster mit Strings zu vergleichen. Regexps werden mit den Symbolen /.../ und %r{...} oder auch mit dem Regexp.new Konstruktor erstellt.

Konstanten

EXTENDED Ignoriert Leerzeichen und Zeilenumbrüche im regexp.
IGNORECASE Treffer sind unabhängig von der Groß- bzw. Kleinschreibung.
MULTILINE Zeilenumbrüche werden wie jedes andere Zeichen behandelt.

class methods
compile Regexp.compile( muster[, optionen[sprache]] ) -> einRegAusdr

Synonym für Regexp.new.

escape Regexp.escape( einString ) -> einNeuerString

Eliminiert alle Zeichen, die in einem regulären Ausdruck eine spezielle Bedeutung hätten. Regexp.escape(str)=~str ergibt für jeden beliebigen String true.

Regexp.escape('\\*?{}.') » \\\\\*\?\{\}\.

last_match Regexp.last_match -> einErgebnis

Gibt das letzte MatchData-Objekt zurück, das vom letzten erfolgreichen Mustervergleich erstellt wurde. Equivalent mit dem Auslesen der globalen Variable $~. Die Klassendokumentation von MatchData findet sich weiter oben.

new Regexp.new( muster[, optionen[sprache]] ) -> einRegAusdr

Erstellt einen neuen regulärend Ausdruck aus muster, das entweder ein String oder ein Regexp sein (im letzteren Fall werden die Optionen dieses regulären Ausdrucks nicht weitergegeben). Wenn optionen eine Fixnum ist, sollten es ein oder mehrere ODER-verknüpfte Werte aus Regexp::EXTENDED, Regexp::IGNORECASE und Regexp::POSIXLINE sein. Wenn andererseits optionen nicht nil ist, berücksichtigt der Ausdruck keine Groß-/Kleinschreibung. Der Parameter sprache ermöglicht eine Multibyte-Unterstützung für den Ausdruck: `n', `N' = none, `e', `E' = EUC, `s', `S' = SJIS, `u', `U' = UTF-8.

r1 = Regexp.new('^a-z+:\\s+\w+') » /^a-z+:\s+\w+/
r2 = Regexp.new(r1, true) » /^a-z+:\s+\w+/i
r3 = Regexp.new(r2, Regexp::EXTENDED) » /^a-z+:\s+\w+/x

quote Regexp.quote( einString ) -> einNeuerString

Synonym für Regexp.escape.

instance methods
== rxp == einRegAusdr-> true oder false

Gleichheit---Zwei reguläre Ausdrücke sind gleich, wenn ihre Muster identisch sind, sie auf demselben Zeichensatz fußen und ihre casefold?-Werte gleich sind.

/abc/  == /abc/x » true
/abc/  == /abc/i » false
/abc/u == /abc/n » false

=== rxp === einString-> true oder false

Fallgleichheit---Synonym für Regexp#=~ das in Case-Ausdrücken verwendet wird.

a = "HELLO"
case a
when /^a-z*$/; print "Lower case\n"
when /^A-Z*$/; print "Upper case\n"
else;            print "Mixed case\n"
end
produces:
Upper case

=~ rxp =~ einString-> einInteger oder nil

Vergleich---Vergleicht rxp mit einString. Gibt den Offset des getroffenen Teilstrings vom ersten Zeichen in einString bzw. nil wenn kein Treffer erzielt wurde zurück.

/SIT/  =~ "insensitive" » nil
/SIT/i =~ "insensitive" » 5

~ ~ rxp-> einInteger oder nil

Vergleich---Vergleicht rxp mit dem Inhalt von $_. Equivalent mit rxp =~ $_.

$_ = "input data"
~ /at/ » 7

casefold? rxp.casefold? -> true oder false

Gibt den Wert des Groß-/Kleinschreibungs-Flags zurück.

kcode rxp.kcode -> einString

Gibt den Zeichensatzcode des regulären Ausdrucks zurück.

match rxp.match(einString) -> einErgebnis oder nil

Gibt ein MatchData-Objekt zurück, das die Ergebnismenge beschreibt bzw. nil wenn kein Treffer gefunden wurde. Dies ist equivalent mit der Abfrage der speziellen Variable $~ nach einem normalen Vergleich.

/(.)(.)(.)/.match("abc")[2] » "b"

source rxp.source -> einString

Gibt den urspünglichen Muster-String zurück.

/ab+c/ix.source » "ab+c"


Extracted from the book "Programming Ruby - The Pragmatic Programmer's Guide"
Übersetzung: Carsten Schinzer
Für das englische Original:
© 2000 Addison Wesley Longman, Inc. Released under the terms of the Open Publication License V1.0. That reference is available for download.
Diese Lizenz sowie das Original vom Herbst 2001 bilden die Grundlage der Übersetzung
Es wird darauf hingewiesen, dass sich die Lizenz des englischen Originals inzwischen geändert hat.
Für die deutsche Übersetzung:
© 2002 Jürgen Katins
Der Copyright-Eigner stellt folgende Lizenzen zur Verfügung:
Nicht-freie Lizenz:
This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at http://www.opencontent.org/openpub/). Distribution of substantively modified versions of this document is prohibited without the explicit permission of the copyright holder. Distribution of the work or derivative of the work in any standard (paper) book form is prohibited unless prior permission is obtained from the copyright holder.
Freie Lizenz:
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".