Reguläre Ausdrücke

Aus TV-Browser Wiki
Version vom 23. Februar 2008, 13:49 Uhr von Siox⧼word-separator⧽⧼parentheses⧽ ⧼parentheses⧽
⧼revision-nav⧽
Wechseln zu: Navigation⧼comma-separator⧽Suche

Was sind reguläre Ausdrücke

Reguläre Ausdrücke sind sehr vielseitige Wildcards. mit ".*ter\b.*" können Sie z.B. Sendungen finden, die Wörter enthalten, die auf "ter" enden. Weitere Informationen zu "regulären Ausdrücken" bekommen Sie in diesem Wikipedia-Artikel.

Eine Erläuterung der im TV-Browser verwendeten Syntax findet man in der Java-Dokumentation.

Beispiele

Ausdruck Ergebniss
star *trek.* Findet alles mit star am Anfang, gefolgt von beliebig vielen Leerzeichen, danach ein trek und dann beliebige Zeichen.

Z.B.: Star Trek, Star   Treker, Star Trek - Deep Space Nine

.*ter\b.* Beliebige Zeichen, ter danach ein Trennzeichen und danach wieder beliebige Zeichen.

Z.B.: Heiter und Sonnig, Unter der Sonne, Winter

.*(James Bond|007).* Beliebige Zeichen gefolgt von entweder James Bond ODER 007 und dann wieder beliebige Zeichen.
(.*(James *Bond|\D007).*)|007.* Erste Klammer: Beliebige Zeichen gefolgt von entweder (James gefolgt von beliebig vielen Leerzeichen UND Bond) ODER kein numerisches Zeichen und 007 (damit zB. 2007 nicht gefunden wird) und dann wieder beliebige Zeichen.

Zweites ODER (|007.*): 007 gefolgt von beliebigen Zeichen

(?i).*star.*trek[^:].* Findet alle Star Trek Filme und ignoriert die Serien. (?i) = ignoriere Groß- Kleinschreibung. Das Fragezeichen verhindert eine Gruppierung der Klammern. .*star.*trek Irgendwelche Zeichen gefolgt von star gefolgt von irgendwelchen Zeichen, gefolgt von trek. [^:]gefolgt von keinem Zeichen aus der Liste, wo [a-z] die Liste a,b,c,d... angibt und [^a-z] a,b,c,d ... ausschliesst. Gefolgt von irgendwelchen Zeichen.

Findet "Star Trek IV" aber nicht "Star Trek: irgendetwas"

(?i).*star.*trek[:].* Findet alle Star Trek Titel, die Star Trek: enthalten

Generelles

Reguläre Ausdrücke (auch regular expressions, kurz Regex) bieten die Möglichkeit Texte durch Muster zu beschreiben. Am besten versteht man es in etwa so. Du hast einen Text den du finden möchtest. Mit regulären Ausdrücken kannst du die Schablone dafür erzeugen, die beim auflegen auf den Text, das Ergebnis zeigt.

Reguläre Ausdrücke werden vielfälltig verwendet. Man kann mit ihnen URL's wie "http://www.example.com", Emails etc überprüfen. Aber genauso kann man sie verwenden um Filme, Serien etc ausfindig zu machen. So könnte man sich zum Beispiel anzeigen lassen, welche Sendung eine URL als Info anzeigt.

\b((https?|telnet|gopher|file|wais|ftp):[\w/\#~:.?+=&%@!-]+?)(?=[.:?\-]*(?:[^\w/\#~:.?+=%@!-]|$))

So sagt

Ausdruck Ergebniss
\b Beginne an der Wortgrenze
(https?|telnet|gopher|file|wais|ftp) Diese müssen enthalten sein. Wobei https? bedeutet. http ist Pflicht, aber das "s" muss einmal oder keinmal vorhanden sein.
: Der Doppelpunkt muss danach vorhanden sein.
[\w/\#~:.?+=&%@!-]+? ein oder mehrere gültige Zeichen aus der Liste. In [] eckigen Klammern markiert dies als Liste. +? sag aber so wenige wie möglich.
(?= Ausschau halten, aber nicht gruppieren, nach
[^\w/\#~:.?+=%@!-]|$ möglichen [Interpunktionszeichen] ungültigen Zeihen oder | Stringende (Wortende).