[Gelöst] HTTPMOD Reading mit Regexpr

Begonnen von fExplorer, 05 Mai 2019, 20:58:33

Vorheriges Thema - Nächstes Thema

fExplorer

Hallo,

ich habe ein HTTPMOD definiert welches mir eine Webseite abholt in der (im body) lediglich eine zweistellige Zahl steht.

Die Regexpr habe ich so definiert

([0-9])\w+

Anstelle der zweistelligen Zahl, z.B. 68 wird in mein reading nur die Zahl
2

eingetragen.
Ich vermute ich verstehe die Syntax noch nicht.
Kann mir jemand helfen die Zahl in das ReadingsValue zu bekommen?
Mein Device ist wie folgt

BUSY       0
   CFGFN     
   DEF        http://myip/temp_2.html 60
   FUUID      5ccf1f71-f33f-3629-081c-c8b8e3de96f4d193
   Interval   60
   LASTSEND   1557082374.88649
   MainURL    http://myip/temp_2.html
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       HolzofenTemp
   NOTIFYDEV  global
   NR         1441
   NTFY_ORDER 50-HolzofenTemp
   STATE      ???
   TRIGGERTIME 1557082434.88262
   TRIGGERTIME_FMT 2019-05-05 20:53:54
   TYPE       HTTPMOD
   addr       http://myip
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://myip/temp_2.html
   header     
   host       192.168.2.31
   httpbody   <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Home-Tech local</title>
</head>
<body>
15
</body>
</html>

   httpheader HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/2.7.13
Date: Sun, 05 May 2019 18:52:54 GMT
Content-type: text/html
Content-Length: 251
Last-Modified: Sun, 05 May 2019 16:05:04 GMT
   httpversion 1.0
   hu_blocking 0
   hu_filecount 35
   hu_port    8000
   hu_portSfx :8000
   ignoreredirects 0
   loglevel   4
   path       /temp_2.html
   protocol   http
   redirects  0
   timeout    2
   url        http://myip/temp_2.html
   value      0
   QUEUE:
   READINGS:
     2019-05-05 20:52:54   temp            2
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://myip/temp_2.html
     value      0
   defptr:
     readingBase:
       temp       reading
     readingNum:
       temp       1
     readingOutdated:
     requestReadings:
       update:
         temp       reading 1
   sslargs:
Attributes:
   reading1Name temp
   reading1Regex ([0-9])\w+
   room       Test
   showBody   1
   userattr   reading1Name reading1Regex

amenomade

#1
([0-9])\w+bedeutet (eine Zahl zwischen 0 und 9) gefolgt von mind. 1  Zahl oder Buchstabe


(?s)body>.*?(\d+)

Regex kann man z.B. hier testen: https://regex101.com/
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

fExplorer

Zitat von: amenomade am 05 Mai 2019, 21:02:22
([0-9])\w+bedeutet (eine Zahl zwischen 0 und 9) gefolgt von mind. 1  Zahl oder Buchstabe


(?s)body>.*?(\d+)

Regex kann man z.B. hier testen: https://regex101.com/

OK, so würde es wohl auch gehen ([0-9])
Aber was bedeutet (?s)

fExplorer

Aber was bedeutet (?s)
[/quote]

Ah, OK, das geht nicht in dem Tester den ich benutzte
https://regexr.com/

Danke!

amenomade

Die Websiete liefert:

Zitat<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Home-Tech local</title>
</head>
<body>
15
</body>
</html>

Zitat von: fExplorer am 05 Mai 2019, 21:57:04
OK, so würde es wohl auch gehen ([0-9])
Nein, das kann sowohl die 8 von "utf-8" oder die 1 von "initial-scale=1" zurückliefern. Und ergibt immer nur eine einzige Zahl. Dein Ding ist aber 2-stellig

Teste einfach auf https://regex101.com/
Dort kriegst Du sogar rechts  eine Erklärung von jedem Parameter in der Regex.
Und dort kriegst Du auch die Erklärung von (?s)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus