Regulärer Ausdruck: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
(Korrekturen; Erweiterung um Beispiel mit/auf regexp101.com) |
||
Zeile 1: | Zeile 1: | ||
Ein [[Regulärer Ausdruck]] (englisch ''regular expression'', daher auch häufig als '''''RegExp''''' oder '''''Regex''''' abgekürzt; siehe auch [https://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck Wikipedia]) wird im Kontext von Fhem häufig benutzt, um aus Zeichenketten anhand von Mustern und Regeln einzelne Teile zu extrahieren. | Ein [[Regulärer Ausdruck]] (englisch ''regular expression'', daher auch häufig als '''''RegExp''''' oder '''''Regex''''' abgekürzt; siehe auch [https://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck Wikipedia]) wird im Kontext von Fhem häufig benutzt, um aus Zeichenketten oder aus dem Strom der Ereignisse anhand von Mustern und Regeln einzelne Teile bzw. Ereignisse zu extrahieren. | ||
== Anwendung in Fhem == | == Anwendung in Fhem == | ||
Die Notwendigkeit der Verwendung regulärer | Die Notwendigkeit der Verwendung regulärer Ausdrücke ergibt sich beispielsweise bei der Definition eines [[FileLog]] (Filtern der Ereignisse) oder um aus einem mit [[HTTPMOD]] "gewonnenen" Datenstrom die relevanten Daten zu Weiterverarbeitung zu isolieren. | ||
Einige Stellen, an denen reguläre Ausdrücke in Fhem vorkommen (wie z.B. [[FileLog]] und [[SVG]]), bieten eine Basisunterstützung bei der Definition und Verwaltung der zugehörigen Ausdrücke. | |||
== Werkzeuge zur Erstellung Regulärer Ausdrücke == | == Werkzeuge zur Erstellung Regulärer Ausdrücke == | ||
Zeile 11: | Zeile 13: | ||
Exemplarisch wird hier der [http://chris.photobooks.com/regex/ Regular Expression Tester] von Chris Nielsen vorgestellt (insbesondere, weil er auch eine "Explain" Funktion bietet, mit deren Einsatz die einzelnen Bestandteile des zu testenden regulären Ausdrucks erläutert werden). Es gibt eine große Vielfalt anderer Internetseiten, die sich mit der gleichen Thematik befassen. | Exemplarisch wird hier der [http://chris.photobooks.com/regex/ Regular Expression Tester] von Chris Nielsen vorgestellt (insbesondere, weil er auch eine "Explain" Funktion bietet, mit deren Einsatz die einzelnen Bestandteile des zu testenden regulären Ausdrucks erläutert werden). Es gibt eine große Vielfalt anderer Internetseiten, die sich mit der gleichen Thematik befassen. | ||
==== "Execute" ==== | |||
Anhand des nebenstehenden Bildschirmfotos soll an einem einfachen Beispiel die generelle Funktionsweise derartiger Hilfsmittel erläutert werden: | Anhand des nebenstehenden Bildschirmfotos soll an einem einfachen Beispiel die generelle Funktionsweise derartiger Hilfsmittel erläutert werden: | ||
;Input | ;Input | ||
Zeile 19: | Zeile 22: | ||
:Die einzelnen Teile des Testergebnisses. Der Ausdruck in Klammern {{Taste|([A-Za-z]+)}} stellt den Teil dar, der zur Weiterverarbeitung benutzt werden soll; der Rest dient zu Identifizierung der richtigen Stelle (hier ''Match at character 802'') innerhalb des Datenstroms. | :Die einzelnen Teile des Testergebnisses. Der Ausdruck in Klammern {{Taste|([A-Za-z]+)}} stellt den Teil dar, der zur Weiterverarbeitung benutzt werden soll; der Rest dient zu Identifizierung der richtigen Stelle (hier ''Match at character 802'') innerhalb des Datenstroms. | ||
=== | ==== "Explain" ==== | ||
[[Datei:RegExp_TestExplain.png|mini|400px|right|Regular Expression Tester, Explain]] | [[Datei:RegExp_TestExplain.png|mini|400px|right|Regular Expression Tester, Explain]] | ||
Der oben beschriebene ''Regular Expression Tester'' bietet über die Schaltfläche ''Explain'' auch eine Erläuterungsfunktion. Ebenfalls am obigen Beispiel wird im Bildschirmfoto wieder dargestellt, wie die einzelnen Bestandteile des regulären Ausdrucks sich auswirken. | Der oben beschriebene ''Regular Expression Tester'' bietet über die Schaltfläche ''Explain'' auch eine Erläuterungsfunktion. Ebenfalls am obigen Beispiel wird im Bildschirmfoto wieder dargestellt, wie die einzelnen Bestandteile des regulären Ausdrucks sich auswirken. | ||
== Beispiele == | <br clear=all> | ||
=== Regex101.com === | |||
[[Datei:RegExp_regex101-com.png|mini|400px|left|regex101.com - Beispiel aus Spritpreismonitor]] | |||
Auf der Seite [http://regex101.com/#p regexp101.com] werden die Bestandteile des regulären Ausdrucks zusätzlich zur Erläuterung auch noch farblich voneinander abgehoben. Das nebenstehende Beispiel zeigt einen kurzen Auszug aus dem [[Spritpreismonitor]]. | |||
<br clear=all> | |||
== (Weitere) Beispiele == | |||
Es finden sich hier und im Fhem Forum viele, teilweise recht komplexe Beispiele für die Verwendung von regulären Ausdrücken, unter anderem | Es finden sich hier und im Fhem Forum viele, teilweise recht komplexe Beispiele für die Verwendung von regulären Ausdrücken, unter anderem | ||
* auf der Seite [[Spritpreismonitor]] | * auf der Seite [[Spritpreismonitor]] | ||
Zeile 29: | Zeile 38: | ||
* auf der Seite [[Wetter und Wettervorhersagen]] | * auf der Seite [[Wetter und Wettervorhersagen]] | ||
* ... | * ... | ||
== Links == | |||
* [https://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck Wikipedia] | |||
* [http://chris.photobooks.com/regex/ Regular Expression Tester] | |||
* [http://regex101.com/#p regexp101.com] |
Version vom 10. Oktober 2015, 15:37 Uhr
Ein Regulärer Ausdruck (englisch regular expression, daher auch häufig als RegExp oder Regex abgekürzt; siehe auch Wikipedia) wird im Kontext von Fhem häufig benutzt, um aus Zeichenketten oder aus dem Strom der Ereignisse anhand von Mustern und Regeln einzelne Teile bzw. Ereignisse zu extrahieren.
Anwendung in Fhem
Die Notwendigkeit der Verwendung regulärer Ausdrücke ergibt sich beispielsweise bei der Definition eines FileLog (Filtern der Ereignisse) oder um aus einem mit HTTPMOD "gewonnenen" Datenstrom die relevanten Daten zu Weiterverarbeitung zu isolieren.
Einige Stellen, an denen reguläre Ausdrücke in Fhem vorkommen (wie z.B. FileLog und SVG), bieten eine Basisunterstützung bei der Definition und Verwaltung der zugehörigen Ausdrücke.
Werkzeuge zur Erstellung Regulärer Ausdrücke
Insbesondere bei nur gelegentlicher Erstellung von Regulären Ausdrücken können diverse im Internet verfügbare "Tester" oder "Analyzer" wertvolle Hilfe leisten.
Regular Expression Tester
Exemplarisch wird hier der Regular Expression Tester von Chris Nielsen vorgestellt (insbesondere, weil er auch eine "Explain" Funktion bietet, mit deren Einsatz die einzelnen Bestandteile des zu testenden regulären Ausdrucks erläutert werden). Es gibt eine große Vielfalt anderer Internetseiten, die sich mit der gleichen Thematik befassen.
"Execute"
Anhand des nebenstehenden Bildschirmfotos soll an einem einfachen Beispiel die generelle Funktionsweise derartiger Hilfsmittel erläutert werden:
- Input
- Datenstrom, der mit dem regulären Ausdruck verarbeitet werden soll; hier ein Teil (der Quelldaten) einer HTML-Seite.
- Expression
- Regulärer Ausdruck, mit dessen Hilfe aus dem Datenstrom der Wert des Feldes CM Status, also in diesem Fall Operational extrahiert werden soll.
- Output
- Die einzelnen Teile des Testergebnisses. Der Ausdruck in Klammern ([A-Za-z]+) stellt den Teil dar, der zur Weiterverarbeitung benutzt werden soll; der Rest dient zu Identifizierung der richtigen Stelle (hier Match at character 802) innerhalb des Datenstroms.
"Explain"
Der oben beschriebene Regular Expression Tester bietet über die Schaltfläche Explain auch eine Erläuterungsfunktion. Ebenfalls am obigen Beispiel wird im Bildschirmfoto wieder dargestellt, wie die einzelnen Bestandteile des regulären Ausdrucks sich auswirken.
Regex101.com
Auf der Seite regexp101.com werden die Bestandteile des regulären Ausdrucks zusätzlich zur Erläuterung auch noch farblich voneinander abgehoben. Das nebenstehende Beispiel zeigt einen kurzen Auszug aus dem Spritpreismonitor.
(Weitere) Beispiele
Es finden sich hier und im Fhem Forum viele, teilweise recht komplexe Beispiele für die Verwendung von regulären Ausdrücken, unter anderem
- auf der Seite Spritpreismonitor
- in der Beschreibung des Moduls HTTPMOD
- auf der Seite Wetter und Wettervorhersagen
- ...