Galileo Computing < openbook > Galileo 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

Download:
- ZIP, ca. 6,7 MB
Buch bestellen
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
Galileo Computing
ISBN 978-3-89842-779-1
Online bestellenPrint-Version jetzt 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


Galileo 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.


Galileo 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 = /\./

Galileo 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"


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  Zum Katalog
Zum Katalog: Ruby on Rails 2






Ruby on Rails 2
Jetzt bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Zend Framework






 Zend Framework


Zum Katalog: AJAX






 AJAX


Zum Katalog: Praxisbuch Web 2.0






 Praxisbuch Web 2.0


Zum Katalog: CSS-Layouts






 CSS-Layouts


Zum Katalog: JavaScript und Ajax






 JavaScript und Ajax


Zum Katalog: Professionelles Webdesign mit (X)HTML und CSS






 Professionelles Webdesign
 mit (X)HTML und CSS


Zum Katalog: Suchmaschinen-Optimierung






 Suchmaschinen-Optimierung


Zum Katalog: XHTML, HTML und CSS






 XHTML, HTML und CSS


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 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.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de