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
([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/
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)
Aber was bedeutet (?s)
[/quote]
Ah, OK, das geht nicht in dem Tester den ich benutzte
https://regexr.com/ (https://regexr.com/)
Danke!
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)