Seite 1 von 1

Regular Expression

Verfasst: Freitag 16. Februar 2018, 12:30
von zappa
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.

Re: Regular Expression

Verfasst: Freitag 16. Februar 2018, 13:06
von __deets__
(,\d+)? für den Nachkommaanteil. Der muss halt optional werden.

Re: Regular Expression

Verfasst: Freitag 16. Februar 2018, 13:06
von Sirius3
@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?