Hallo,
ich hoffe es kann mir jemand helfen den regex Befehl entsprechend anzupassen, ich bin dafür einfach zu blöd ;-)
Ich habe folgenden String und den Fetten Bereich hätte ich gerne:
WLAN-Verbindung: gut; Browser-Ladegeschwindigkeit: gut
Damit klappt das auch soweit:
(?s)WLAN-Verbindung:.*?(\w+)
(?s)Browser-Ladegeschwindigkeit:.*?(\w+)
Jedoch steht da nicht immer gut, sondern z.B. auch da:
WLAN-Verbindung: noch o.k.; Browser-Ladegeschwindigkeit: gut
(?s)WLAN-Verbindung:.*?(\w+) beendet dann entsprechend bei dem Leerzeichen hinter "noch"
Wie kann ich das so ändern das der erste String bis zum ; geht und der zweite einfach bis zu ende?
Meine Fähigkeiten bei regex reichen dafür leider nicht aus.
Danke schon mal für die Hilfe.
Gruß
Björnar
:.(.*);.*:.(.*)$
https://regexr.com/5th42
Sorry, es ging ja nur um die fetten Anteile:
Dann so:
https://regexr.com/5th4b
sowas?
gb#
Danke schon mal für die Antwort.
Kann ich leider so nicht umsetzen.
Mit "(?s)(?s)WLAN-Verbindung:.*?(\w+)" suche ich ja nach dem String "WLAN-Verbindung:" und nehme dann das Wort dahinter.
Also müsste der ".*?(\w+)" Teil irgendwie angepasst werden.
Schreib doch einfach WLAN-Verbindung vor den Vorschlag von oben, oder kannst es damit auch nicht umsetzen ?
WLAN-Verbindung:.(.*);.*:.(.*)$
das habe ich ja versucht, aber das funktioniert dann auch nicht.
Was regex angeht reicht es bei mir wohl wirklich nur zu copy and paste.
Bennis Vorschlag passt doch auf Deinen String? Auch mit deinem Text
WLAN-Verbindung:\s(.*);.*:\s(.*)
Warum bestehts Du auf den (?s) - in welchem Kontext verwendest Du das regEx denn? (?s) ist ein mode modfier ???
Bestehe ich überhaupt nicht drauf.
Ich lese aus der Seite meines Weathermans mehrere Werte aus die nicht über CCU kommen.
Das klappt mit dem String halt solange das Wort kein Leerzeichen hat.
Wie auch immer das dann gemacht werden muss.
Wenn ich das richtig verstehe Sicht mein regex nach dem Teig und nimmt einfach das Wort was dahinter steht.
Ob das auch anders geht keine Ahnung
Auf der Seite werden halt viele Werte dargestellt.
Ich würde das so schreiben:
WLAN-Verbindung:\s(.+?);\sBrowser-Ladegeschwindigkeit:\s(.+)$
https://regex101.com/r/8rjPoi/1
\w ist ein Shorthand für [A-Za-z0-9_], also mehr oder weniger alle "Wörter". Da is aber kein Punkt dabei, und keine Leerzeichen.
\w+ macht daher meiner Meinung nach nicht viel Sinn.
*EDIT:* Das geht auch, und ist laut regex101.com sogar effizienter:
(?s)WLAN-Verbindung:.*?([\w\s.]+)
Zitat von: Bjoernar am 23 Mai 2021, 17:29:26
Kann ich leider so nicht umsetzen.
Meine oben vorgeschlagene regex
:.(.*);.*:.(.*)$
wurde sowohl mit
WLAN-Verbindung: gut; Browser-Ladegeschwindigkeit: gut
als auch mit
WLAN-Verbindung: noch o.k.; Browser-Ladegeschwindigkeit: gut
getestet und lieferte in beiden Fällen das gewünschte Ergebnis in den Gruppen 1 und 2
Danke für die Hilfe.
das Klappt entsprechend:
(?s)WLAN-Verbindung: .*?([\w\s.]+)