Regular Expressions
(Weiterleitung von Regulärer Ausdruck)
 
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

Die Funktion "Suchen und Ersetzen" in Texten auf "höchstem Niveau".

Formaler: Ein Ausdruck, der eine ReguläreSprache? repräsentiert und benutzt werden kann um herauszufinden, ob ein gegebenes Wort Teil der Sprache ist oder nicht.

Bei näherer Betrachtung liegt hier (in/zwischen den beiden vorangehenden Sätzen) ein Dilemma: An dem Punkt an dem Reguläre Ausdrücke wirklich nützlich werden, sind sie meist nicht mehr regulär...

Am besten realisiert und integriert in der SprachePerl. In manchen anderen ProgrammierSprachen gibt es Zusatzfunktionen oder Libraries dafür.

Standardisierung:
Leider gibt es keine einheitliche Standardisierung, obwohl die verschiedenen Systeme sehr ähnlich sind. Die drei am weitesten verbreiteten System sind Basic- und Extended Regular Expressions (nach POSIX, z. B. in egrep(1) beschrieben) und die Perl-REs (mit vielen kompatiblen Implementationen).

Regular Expressions sind keine einfache Sache. Die gängigen Perl-Bücher enthalten jeweils ein mehr oder weniger ausführliches Einführungskapitel.

Allgemein empfohlen wird:


Kleiner Streifzug (aus Perl entnommen):

Einfaches Suchen (m=Match):

if( $name =~ m/Maier/ ) ...

Mehrfaches Ersetzen (s=Search&Replace, g=global=mehrfach):

$text =~ s/Maier/Müller/g;

Dann beginnt es Spaß zu machen. '+' bedeutet, dass das vorangehende Zeichen ein oder mehrfach vorkommmen kann; so werden z.B. im Wiki die horizontalen Linien erzeugt.

$text =~ s/----+/<hr>/g;

In eckigen Klammern gibt man an, wenn man einen Buchstaben aus einer Menge sucht, in runden Klammern sammelt man Suchergebnisse für die Weiterverwendung (automatisch in den Variablen $1, $2, ...). Die Option "e" führt den zweiten Befehlsteil als Programm aus. Somit quadriert das Folgende alle in einem Text gefundenen Integerzahlen (Ergebnis: "169 49 25"):

my $text="13 7 5";
$text =~ s/([0-9]+)/$1*$1/ge;

Das Folgende sucht alle Worte in einem Text, sammelt sie in einer Hash-Tabelle (damit werden Duplikate entfernt) und gibt sie als sortierte Liste aus (Ergebnis: "Hans Peter der ist"):

my $text="der Hans ist Peter ist der";
my %hash;
$text =~ s/([A-Za-z]+)/$hash{$1}=null/ge;
print join(" ",sort keys %hash);

So entfernt man WhiteSpace vom Anfang und Ende eines Strings:

$text =~ s/^\s+|\s+$//g;

...


siehe auch
Seit neustem auch bei Google

Zufällig stieß ich auf http://www.heise.de/newsticker/meldung/79067 (bemerkenswerte, teils lustige Kommentare).

Unter http://www.google.com/codesearch durchsucht Google Quelltexte mit Regulären Ausdrücken, allerdings müssen ernstgemeinte Leerzeichen speziell gekennzeichnet werden. Man bekommt dafür aber auch etwas geboten, z.B. im Falle von http://www.google.com/codesearch?hl=en&lr=&q="this should never occur"&btnG=Search


StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 17. Oktober 2006 8:59 (diff))
Suchbegriff: gesucht wird
im Titel
im Text