Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort des Fachgutachters
Einleitung
1 Einführung
2 Installation
3 Erste Schritte
4 Einführung in Ruby
5 Eine einfache Bookmarkverwaltung
6 Test-Driven Development
7 Rails-Projekte erstellen
8 Templatesystem mit ActionView
9 Steuerzentrale mit ActionController
10 Datenbankzugriff mit ActiveRecord
11 E-Mails verwalten mit ActionMailer
12 Nützliche Helfer mit ActiveSupport
13 Ajax on Rails
14 RESTful Rails und Webservices
15 Rails mit Plug-ins erweitern
16 Performancesteigerung
17 Sicherheit
18 Veröffentlichen einer Rails-Applikation auf einem Server
Ihre Meinung?

Spacer
 <<   zurück
Ruby on Rails 2 von Hussein Morsy, Tanja Otto
Das Entwickler-Handbuch
Buch: Ruby on Rails 2

Ruby on Rails 2
geb., mit DVD
699 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-89842-779-1
Online bestellenPrint-Version Jetzt Buch bestellen
* versandkostenfrei in (D) und (A)
Pfeil 4 Einführung in Ruby
  Pfeil 4.1 Was ist Ruby?
  Pfeil 4.2 Ruby-Code ausführen
  Pfeil 4.3 Grundlagen
  Pfeil 4.4 Zahlen
  Pfeil 4.5 Zeichenketten
  Pfeil 4.6 Symbole
  Pfeil 4.7 Reguläre Ausdrücke
  Pfeil 4.8 Arrays
  Pfeil 4.9 Hashes
  Pfeil 4.10 Datum und Zeit
  Pfeil 4.11 Module


Rheinwerk Computing - Zum Seitenanfang

4.7 Reguläre Ausdrücke  Zur nächsten ÜberschriftZur vorigen Überschrift

Muster

Reguläre Ausdrücke oder kurz Regex sind Muster, um in Zeichenketten nach Entsprechungen zu suchen. Jedes Zeichen innerhalb eines Musters hat eine bestimmte Bedeutung. Reguläre Ausdrücke werden eingesetzt, um zu vergleichen (zum Beispiel, um zu prüfen, ob eine bestimmte Zeichenkette innerhalb einer anderen vorkommt), um zu suchen (zum Beispiel die Position eines Zeichens innerhalb einer Zeichenkette) und um ggf. das gefundene zu ersetzen.


Rheinwerk Computing - Zum Seitenanfang

Syntax von Regulären Ausdrücken  Zur nächsten ÜberschriftZur vorigen Überschrift

Auch Reguläre Ausdrücke sind, wie alles in Ruby, Objekte. Ein Regulärer Ausdruck ist eine Instanz der Klasse Regexp und kann über den Aufruf der Klassenmethoden Regexp.compile oder Regexp.new (Synonym von compile), die einen String oder einen Regulären Ausdruck als Parameter erwarten, erzeugt werden. Oder Sie nutzen eine der Kurzschreibweisen /Regex/ oder %r(Regex):

>> Regexp.compile("buch")
=> /buch/
>> Regexp.new(/lampe/)
=> /lampe/
>> %r(tisch)
=> /tisch/
>> /stuhl/.class
=> Regexp

Darüber hinaus stehen in Regulären Ausdrücken Symbole und Abkürzungen zur Verfügung, von denen wir auch hier nur die am meistbenutzen auflisten:

Symbol/Abkürzung Beschreibung
^ Anfang einer Zeile oder Zeichenkette
$ Ende einer Zeile oder Zeichenkette
. ein beliebiges Zeichen (neue Zeile nur im Mehrzeilenmodus)
\ w ein beliebiges alphanumerisches Zeichen und der Unterstrich
\ W ein beliebiges Zeichen, das nicht alphanumerisch und auch kein Unterstrich ist
\ s ein Leerraum (Whitespace)
\ S ein Zeichen, das kein Leerraum (Whitespace) ist
\ d eine beliebige ganze Zahl
\ D keine Ziffer
\ A Anfang einer Zeichenkette
\ Z Ende einer Zeichenkette oder Ende einer Zeile
\ z Ende einer Zeichenkette
\ b Wortgrenze (außerhalb von Bereichsangaben)
\ B keine Wortgrenze
\ b Backspace (innerhalb von Bereichsangaben)
[] Bereichsangabe
* null oder mehrmalige Wiederholung des vorhergehenden Ausdrucks
+ ein- oder mehrmalige Wiederholung des vorhergehenden Ausdrucks
{anz} genau anz-maliges Vorkommen des vorhergehenden Ausdrucks
{min,max} zwischen min- und max-maligem Vorkommen des vorhergehenden Ausdrucks
{min,} mindestens min-maliges Vorkommen des vorhergehenden Ausdrucks
{,max} maximal max-maliges Vorkommen des vorhergehenden Ausdrucks
? ein- oder kein-maliges Vorkommen des vorhergehenden Ausdrucks
() Gruppierung von Ausdrücken
x|y passt auf x oder y (/me(i|y)er/ findet meier und meyer)

Tabelle  Reguläre Ausdrücke-Symbole und Abkürzungen

Modifier

Es ist auch möglich, direkt hinter einen Regex einen sog. Modifier, der die Arbeit der Mustersuche beeinflusst, zu setzen. Modifier bestehen aus einem Buchstaben und sind kombinierbar. Zum Beispiel findet das Muster /buch/i sowohl die Zeichenkette buch als auch Buch . Wir haben nachfolgend die gebräuchlichsten aufgelistet:

Modifier Beschreibung
i ignoriert Groß- und Kleinschreibung im Regulären Ausdruck(case insensitive search).
o liest den Regulären Ausdruck nur einmal(compile pattern once).
m Mehrzeilenmodus(multiple lines)
x erweiterter Regulärer Ausdruck(extended regular expression)

Tabelle  Reguläre Ausdrücke-Modifier

Maskierung

Wenn Sie mit Hilfe eines Regulären Ausdrucks nach einem Zeichen suchen möchten, das innerhalb eines Regulären Ausdrucks eine eigene Bedeutung hat, müssen Sie das Zeichen mit einem Backslash maskieren. Zum Beispiel steht der Punkt innerhalb eines Regex für ein beliebiges Zeichen. Wenn Sie aber nach einem Punkt suchen möchten, könnten Sie folgenden Regulären Ausdruck formulieren:

muster = /\./

Rheinwerk Computing - Zum Seitenanfang

Anwendungsbeispiele aus der Praxis  topZur vorigen Überschrift

Reguläre Ausdrücke werden für drei Anwendungsfälle benutzt:

  1. Vergleichen,
    um zu prüfen, ob eine bestimmte Zeichenkette in einer anderen vorkommt, oder um Usereingaben, wie zum Beispiel Datumseingaben oder E-Mail-Adressen, auf ein bestimmtes Format zu überprüfen.
  2. Suchen,
    um zum Beispiel die Position eines bestimmten Zeichens in einer Zeichenkette zu ermitteln oder um innerhalb eines Arrays nach einem bestimmten Inhalt zu suchen.
  3. Suchen und ersetzen,
    um eine bestimmte Zeichenkette innerhalb einer anderen zu ersetzen.

Vergleichen

Um zu prüfen, ob es sich bei einer Zeichenkette um eine fünf-stellige Ziffernfolge handelt, zum Beispiel, ob eine Postleitzahl korrekt eingegeben wurde, können Sie folgenden Regulären Ausdruck definieren:

muster = /^\d{5}$/
string = "40211"

if string =~ muster
puts "korrekt"
else
puts "nicht korrekt"
end

Einigen von Ihnen wird die Kurzschreibweise

string =~ muster

aus Perl bekannt sein. Sie prüft, ob string dem muster entspricht. Mit dem Aufruf der Methode match würde unser Beispiel so aussehen:

muster = /^\d{5}$/
string = "40211"

if muster.match(string)
puts "korrekt"
else
puts "nicht korrekt"
end
# => korrekt

Suchen

Reguläre Ausdrücke werden dann zum Suchen in einer Zeichenkette eingesetzt, wenn man zum Beispiel wissen möchte, an welcher Position ein bestimmtes Muster in einer Zeichenkette vorkommt. In unserem Beispiel möchten wir wissen, an welcher Position eine Ziffer vorkommt:

muster = /\d/
string="Preis: 2,5 EUR"
puts string.index(muster)
# => 7

Beispiel

Man kann aber auch mit Hilfe von Regulären Ausdrücken prüfen, ob zum Beispiel Elemente eines Arrays Ziffern enthalten:

muster = /\d/
array = ["Preis: 12", "Auto", "Farbe #227799"]

puts array.grep(muster)
# => Preis: 12
# => Farbe #227799
Tipp zum Suchen von Methoden
Die Methode grep(muster) wird sehr gerne benutzt, um in der Ruby-Konsole nach einem Methodennamen für ein Objekt zu suchen, von dem man nur ungefähr weiß, wie er heißen könnte. Zum Beispiel suchen wir nach dem Methodennamen, um einen String in Großbuchstaben umzuwandeln. Wir wissen noch, dass die Methode im Namen case enthält, aber wie genau sie heißt, wissen wir nicht. Dann können wir in der Ruby-Konsole folgendes eingeben:
>> "beispiel".methods.sort.grep(/case/)
=> ["casecmp", "downcase", "downcase!", "swapcase",
"swapcase!", "upcase", "upcase!"

Suchen und Ersetzen

Ein Anwendungsfall für das Suchen und Ersetzen innerhalb von Zeichenketten wäre zum Beispiel das Ersetzen eines Trennzeichens in einem Betrag:

muster = /^\d{5}$/
string = "2,456"
puts string.gsub(/,/,".")
# => 2.456

oder das Vertauschen von Vor- und Nachname:

muster = /(\w+) (\w+)/
string= "Bohr Dominik"
puts string.gsub(muster,'\2, \1')
# => Dominik, Bohr

Mit den Methoden sub und gsub der Klasse String, die in unserem Beispiel zum Einsatz kamen, können Sie Ersetzungen in Zeichenketten vornehmen.

sub

Die Methode sub ersetzt das erste Vorkommen eines Suchmusters mit dem gegebenen Ersetzungsstring oder mit dem Ergebnis des gegebenen Blocks:

>> s1 = "Messer, Messer und Gabel"
=> "Messer, Messer und Gabel"
>> s1.sub(/Messer/, "Loeffel")
=> "Loeffel, Messer und Gabel"

Das Suchmuster ist normalerweise ein Regulärer Ausdruck. Ist das Suchmuster ein String, werden die Abkürzungen der Regulären Ausdrücke mit ihren Sonderbedeutungen nicht mehr als diese erkannt. Der Reguläre Ausdruck /\d/ würde nach einer Ziffer in der Zeichenkette suchen, der String '\d' sucht nach einem Backslash gefolgt von einem d.

gsub

Die Methode gsub funktioniert genauso wie die Methode sub, mit dem Unterschied, dass gsub (global substitution) alle Übereinstimmungen mit dem Suchmuster ersetzt und nicht nur die erste:

>> s2 = "Messer, Messer und Gabel"
=> "Messer, Messer und Gabel"
>> s2.gsub(/Messer/, "Loeffel")
=> "Loeffel, Loeffel und Gabel"

Sowohl sub als auch gsub verfügen über äquivalente Methoden sub! und gsub!, die das Objekt, auf das die Methode angewendet wird, verändern:

>> s = "Das Bild haengt schief"
=> "Das Bild haengt schief"
>> s.gsub!(/schief/, "nicht schief")
=> "Das Bild haengt nicht schief"
>> s
=> "Das Bild haengt nicht schief"


Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

 <<   zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Ruby on Rails 2
Ruby on Rails 2
Jetzt Buch bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: Ruby on Rails 3.1






 Ruby on Rails 3.1


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


Zum Rheinwerk-Shop: JavaScript






 JavaScript


Zum Rheinwerk-Shop: Schrödinger lernt HTML5, CSS3 und JavaScript






 Schrödinger lernt
 HTML5, CSS3
 und JavaScript


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern