[gelöst] kurze Frage zu regex

Begonnen von franky08, 04 Januar 2016, 23:27:42

Vorheriges Thema - Nächstes Thema

franky08

Ich teste jetzt schon seit einer Stunde an einer regex um den numerischen Teil eines Readings vom alphanumerischen "abzuschneiden"

Beispiel: Reading ist name:Ziffer
wie kann ich daraus nur auf "Ziffer" matchen?

/\d/ geht nicht genau wie /[0-9]/ und dann bleibt auch noch :

ist auch schon spät, vlt. morgen noch einmal in Ruhe angehen, mache jetzt sowie so nicht weiter

Falls jemand die Antwort parat hat, gerne

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

justme1968

\d und [0-9] sollte beides gehen. zeig mal was du genau machst.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

franky08

#2
Hallo Andre, jetzt hast du mich kurz vor dem Bett erwischt  :)

my $batt = ReadingsVal("ActionDetector","state","undef");
my @daten = split(/[0-9]/,$batt);

my $alive = $daten[0];
#my $dead = $daten[];
#my $unkn = $daten[];
#my $off = $daten[];

fhem "setreading Batt_Level alive $alive";

Im state steht: state alive:43 dead:0 unkn:0 off:0
VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

justme1968

wenn du an den zahlen splittest werden sie ja entfernt und der rest wandert in das array. da ist genau das gegenteil von dem was du willst.

du kannst an /[: ]/ (doppelpunkt und leerzeichen) splitten und jedes zweite element verwenden. dann hat du auch noch die beschreibungen in den geraden Indizes.

vielleicht geht aus splitten an [^\d]. also splitten an allem was nicht zahl ist. da sollten auch die zahlen in deinem array übrig bleiben.

oder du nimmst etwas in der art: $batt =~ m/(\d*)[^\d]*(\d*)[^\d]*(\d*)[^\d]*(\d*)/ und hast dann die zahlen in $1-$4

ich denke die erste variante ist am besten.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

franky08

Danke Andre, mit
my @daten = split(/[^\d]./,$batt);

habe ich das erwünschte Ergebnis!

Vielen Dank
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1