Exen im Regen - RegEx - Alles über Reguläre Ausdrücke in streamWriter


Reguläre Ausdrücke (Regular Expressions):

Ich halte es für sinnlos hier eine komplette Anleitung Regulärer Ausdrücke wie sie in streamWriter verwendet werden können zu verfassen, die Materie ist einfach zu komplex das einen durchschnittlichen Benutzer erklären zu wollen.
Wer jedoch trotzdem ausführliche Informationen zu dem Thema haben möchte kann dies mit Hilfe der in den weiter unten aufgeführten Weblinks tun.

Kurz gefasste Erläuterungen:

Einige Parameterdefinitionen werden hier in Anführungsstrichen aufgeführt. D.h.: bei "(?P<a>.*) - (?P<t>.*)" müssen die Anführungszeichen entfernt werden bevor diese in streamWriter angewandt werden, wenn nicht anders angegeben.

Der Standart eintrag in 'Einstellungen -> Streams -> Erweitert':

(?P<a>.*) - (?P<t>.*)

Im Normalfall kann man diesen Parameterteil unbeachtet lassen und wie Standardmäßig vorgegeben belassen.

Einige wenige Ausdrücke:

()

Dient der Gruppierung von Suchmustern.

.*

Bedeutet 'unendlich viele beliebige Zeichen'.

.*?

Die minimal nötige Menge wird nur gefunden.

\d+

Erkennt Ziffernt ein- oder mehrmals.

|

ODER-Ausdruck.

Escaping "\":

Bei einigen Suchmuster-Zeichen ist ein 'Escaping' erforderlich welches mit dem BACKLASH-ZEICHEN "\" eingeleitet wird. Das Backslash-Zeichen hebt die besondere Bedeutung von Metazeichen auf:
+ ? . * ( ) ^ $ [ { | \
um diese Literal suchen zu können.

Beispielsweise wird nach dem Zeichen "[" (ohne Anführungszeichen) gesucht, so muss dieses wie folgt angegeben werden: "\[" (ebenfalls ohne Anführungszeichen).

Benannte Gruppen (Named Groups) - (?P<variablenname>):

Hierbei handelt es sich um eine Gruppierung von Suchmustern die lediglich für interne Zwecke Benannt wird.
Zeichenketten, die von eingeklammerten Suchmustern gefunden wurden, werden in eine temporäre Benannte Variable (Named-Subpattern) intern von streamWriter zwischengespeichert. Dies ist notwendig damit streamWriter erkennen kann ob es sich bei der jeweiligen Suchmuster-Gruppierung um eine Künstler-, Songtitel- oder um eine Album Bezeichnung handelt.


In streamWriter sind zur zeit folgende variablen Namen für die Suchmustergruppierung vergeben:

Variable:

Zuordnung:

<a>

Künstler (Artist)

<t>

Songtitel (Title)

<l>

Album (*)


Einige Beispiele:

Titel im Stream des Senders:

Regulärer Ausdruck für streamWriter:

KÜNSTLER - TITEL | streamed by pop-stream.de

(?P<a>.*) - (?P<t>.*) \| (.*)

KÜNSTLER - TITEL [onAir: Moderator]

(?P<a>.*) - (?P<t>.*) \[(.*)\]

KÜNSTLER - TITEL 19:15

(?P<a>.*) - (?P<t>.*) (\d+):(\d+)

Sie hören: TITEL / KÜNSTLER

Sie hören: (?P<t>.*) / (?P<a>.*)

On Air: ARTIST mit TITLE

On Air: (?P<a>.*) mit (?P<t>.*)



Umsetzung bei den RegEx-Online-Testern:

Die meisten Online Tester für Reguläre Ausdrücke können keine sogenannten NAMED GROUPS "(?P<name>)" umsetzen, d.h. Es sind Abwandlungen der in streamWriter verwendeten Darstellungen notwendig. Bei dem "(?P<name>.*)" muss in solchen Onlinetestern das "?P<name>" jeweils entfernt werden, bzw. sollte der Eintrag denn so "(.*)" aussehen:

streamWriter

Online Tester

(?P<a>.*) - (?P<t>.*)

(.*) - (.*)

(?P<a>.*) - (?P<t>.*) \[.*\]

(.*) - (.*) \[.*\]



Empfehlung für 'Meta Tags' (ID3-Tags):

Da bei einigen zu Recherche Zwecken interessante Sendeeinformationen durch eine 'verwerfen' Option in den 'RegEx' Eintragungen verloren gehen könnten, empfehle ich denn 'Titel im Stream' (%u) im 'Kommentar TAG' einzustellen bzw. zu verankern. Diese kann in 'Einstellungen -> Nachbearbeitung -> ID3 Tags setzen ->Konfigurieren' vorgenommen werden.

Empfohlene einstellung für Kommentar-TAG:

"%u ¶ %s ¶ %d ¶ %i ¶ Recordet by streamWriter"

Kurze erläuterungen der einzelnen Parameterdefinitionen:

%u

Ungekürzter Titel im Stream

%s

Stream-/Sendername

%d

Speicherdatum

%i

Speicherzeit

Das Sonderzeichen "¶" macht sich ganz gut zur Trennung der einzelnen Parameter da dieses bisweilen noch kein Sender bei der Übermittlung seiner Informationen verwendet. Wenn die Eingabe-Tastatur über ein 'Numpad' verfügt, läst sich durch Drücken der ALT-Taste und der Eingabe der Zahl 20 das Sonderzeichen bequem einfügen.

Siehe auch:
Wiki // Einstellungen // Nachbearbeitung:
http://streamwriter.org/de/wiki/artikel/settings/#postprocessing



Weblinks:

Alles über "RegEx":
http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck
http://www.regenechsen.de/phpwcms/index.php?regex
http://www.regexe.de/hilfe.jsp
http://openbook.galileocomputing.de/python/python_kapitel_15_002.htm
http://perl-6.de/tutorials/regex

Liste der RegEx-Elemente:
http://www.regenechsen.de/phpwcms/index.php?regex_allg_liste
http://www.regexe.de/hilfe.jsp

Online tester:
http://www.regexe.de/
http://regexp-tester.mediacix.de/exp/regex/
http://www.regextester.com/

Benannte Gruppen (Named Groups):
http://www.regular-expressions.info/named.html (Englisch)
http://openbook.galileocomputing.de/python/python_kapitel_15_002.htm

Weblinks für die Arbeit mit 'RegEx' in streamWriter:

Online Tester:
http://www.regexe.de/
RegEx-Elemente:
http://www.regenechsen.de/phpwcms/index.php?regex_allg_liste