Regular Expression

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
zappa
User
Beiträge: 26
Registriert: Samstag 19. März 2011, 22:31

Freitag 16. Februar 2018, 12:30

Beim Code:

Code: Alles auswählen

import re
b = "3,0 ml/h"
if re.search        ("^\d+\,*\d+\s*([^-]*)/", b):
    
    print (re.search("^\d+\,*\d+\s*([^-]*)/", b))
else:    
    print (re.search("^\d+\,*\d+\s*([^-]*)/", b))

... bekomme ich die korrekte Ausgabe
<_sre.SRE_Match object; span=(0, 7), match='3,0 ml/'>
Wenn ich aber b = "3 ml/h" einsetze gibt es einen Fehler.
Wie muss ich denn de re-Ausdruck umschreiben, damit ich sowohl Dezimal als auch Ganze Zahlen als Ausgabe bekomme? Stehe auf dem Schlauch.
Vielen Dank schon mal.
__deets__
User
Beiträge: 2850
Registriert: Mittwoch 14. Oktober 2015, 14:29

Freitag 16. Februar 2018, 13:06

(,\d+)? für den Nachkommaanteil. Der muss halt optional werden.
Sirius3
User
Beiträge: 7779
Registriert: Sonntag 21. Oktober 2012, 17:20

Freitag 16. Februar 2018, 13:06

@zappa: Du solltest nicht dreimal den selben Ausdruck auswerten. Schau Dir mal an, wie der Ausdruck heißt, wenn das optionale Komma nicht da ist. Warum sind "Zahlen" der Form "3,,,,,,,,,,,,,,,,,,0" erlaubt?
Antworten