FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: somansch am 15 Juli 2017, 19:35:48

Titel: (Gelöst) Regular Expression in data-part - andere Syntax?
Beitrag von: somansch am 15 Juli 2017, 19:35:48
Hallo,

ich habe folgenden String:Phone-5 (WLAN, 121 / 150 Mbit/s, -65)

Nun möchte ich die letzten drei Zeichen vor der abschliessenden Klammer bekommen, also "-65". Hierzu habe ich folgende RegEx erfolgreich in https://regex101.com getestet:
.{3}(?=\))

Wenn ich nun aber diese RegEx in Verbindung mit data-part verwenden möchte, bekomme ich keinen Wert zurück.
data-part=".{3}(?=\))"

Habe es auch schon mit .* davor und danach probiert...

Hat jemand eine Idee? Vielleicht ein Bug?

Danke im Voraus,
Andreas
Titel: Antw:Regular Expression in data-part - andere Syntax?
Beitrag von: amenomade am 15 Juli 2017, 20:28:33
Du hast zwar ein Match, aber kein Capturing Group.

Probier mal z.B..*, (.*?)\)
Titel: Antw:Regular Expression in data-part - andere Syntax?
Beitrag von: somansch am 15 Juli 2017, 23:10:21
Danke, das passt  :)
Titel: Antw:Regular Expression in data-part - andere Syntax?
Beitrag von: somansch am 08 November 2017, 21:33:13
Durch Optimierung meines Codes, möchte ich auch die RegEx verbessern, da sie bei einigen Zeichenfolgen nicht funktioniert.

Hier die Zeichenfolge:
Phone-5 (WLAN, 121 / 150 Mbit/s, -65)

Als Ergebnis soll nach wie vor -65 erscheinen, jedoch soll die Logik der RegEx von vorn suchen. Also z.B. die vierte, fünfte und sechste Stelle nach dem zweiten "/"

Bin für jede Hilfe dankbar.

Danke und Gruß
Andreas
Titel: Antw:Regular Expression in data-part - andere Syntax?
Beitrag von: amenomade am 09 November 2017, 00:46:16
Dann machst Du
- match / (musst Du escapen, dann => "\/")
- match alles, mehrmals
- match / (auch escapen)
Jetzt bist Du nach dem zweiten "/"
- match alles, 3 mal
- capturing group : match alles, 3 mal

regex101.com ist dein Freund

Titel: Antw:Regular Expression in data-part - andere Syntax?
Beitrag von: somansch am 10 November 2017, 00:16:27
Habe jetzt mit Regex101.com ein funktionierendes Ergebnis (siehe Bild). Jedoch bleibt das Ergebnis im FTUI leer?! Irgendwie steig ich nicht dahinter  :'(
Titel: Antw:Regular Expression in data-part - andere Syntax?
Beitrag von: amenomade am 10 November 2017, 00:31:32
Wenn ich mich richtig erinnere, baut data-part noch ^ am Anfang und $ am Ende der Regex. Deswegen sollte folgendes besser funktionieren:
.*\/...(...)\)
Titel: Antw:Regular Expression in data-part - andere Syntax?
Beitrag von: somansch am 10 November 2017, 17:40:56
Hat funktioniert  :).

Vielen Dank
Titel: Antw:(Gelöst) Regular Expression in data-part - andere Syntax?
Beitrag von: amenomade am 10 November 2017, 17:48:29
Und hast Du verstanden warum? ;)
Titel: Antw:(Gelöst) Regular Expression in data-part - andere Syntax?
Beitrag von: somansch am 10 November 2017, 17:57:40
Nicht wirklich
Titel: Antw:(Gelöst) Regular Expression in data-part - andere Syntax?
Beitrag von: amenomade am 10 November 2017, 18:25:06
data-part baut ^ am Anfang und $ am Ende der Regex ein. Das heisst, deine Regex sieht dann in Wirklichkeit so aus:
^.*\/.*\/...(...)$

^ => assume beginning of string = was da gematcht wird muss am Anfang des Strings sitzen. Da Du .* matchest ist es egal. Alles passt.
aber
$ => assume end of string => das heisst konkret "/-48" am Ende des Strings. Das ist aber nicht der Fall, da Du noch ein ) am Ende hast: "-48)"

Deswegen in meiner Regex das \) noch am Ende
Titel: Antw:(Gelöst) Regular Expression in data-part - andere Syntax?
Beitrag von: setstate am 10 November 2017, 18:42:12
Zitatdata-part baut ^ am Anfang und $ am Ende der Regex ein.

Ich überlege mir jedes Mal, ob das so optimal ist oder ob man das lieber ohne Hinzufügen machen sollte.
Das es mit ^ am Anfang und $ am Ende machmal ein anderes Ergebnis liefert also ohne (gerade bei mehrzeiligen Strings) ist klar, aber das Hinzufügen von ^ am Anfang und $ am Ende sollte den Regex sicherer machen.
Mach es das, oder ist man dadurch unflexibler?
Titel: Antw:(Gelöst) Regular Expression in data-part - andere Syntax?
Beitrag von: amenomade am 10 November 2017, 19:31:31
Zitatdas Hinzufügen von ^ am Anfang und $ am Ende sollte den Regex sicherer machen.
Wieso?