Page 1 of 1

Offtopic: Regulare Expression

Posted: Mon May 27, 2019 9:33 am
by utgmk
Servus,

ich habe ein kleines Problem mit Python und Regular Expression.

Ich habe folgenden String:

Code: Select all

status=ready
total=15538848
used=277784
free=15261064
Ich möchte eine Regular Expression die mir die Werte hinter dem = ausgibt.

ready
15538848
277784
15261064

Folgende RegEx habe ich erstellt.
result_regEx = re.search("[=].*",r.text)

Leider bekomme ich bei den Matches print(result_regEx.group(0)) das = mit ausgegeben.

=ready


Über jeden Tipp bin ich ich dankbar. Ich bin davon überzeugt, dass ich nicht so weit von der Lösung entfernt bin.

lg
utgmk

Re: Offtopic: Regulare Expression

Posted: Mon May 27, 2019 11:35 am
by smartifahrer
Wenn du den String Zeilenweise bearbeitest würde sich string.split(separator, max) anbieten
https://docs.python.org/3/library/stdty ... #str.split

Re: Offtopic: Regulare Expression

Posted: Mon May 27, 2019 11:58 am
by mline
Mit group(0) gibst du immer den vollständigen Match aus. Wenn du .* also als Gruppe definierst (.*) wirst du mit group(1) nur den Teil hinter dem = bekommen.

Wird hier und hier ausführlich erklärt.

Re: Offtopic: Regulare Expression

Posted: Mon May 27, 2019 2:53 pm
by utgmk
Hallo,

vielen Dank für den Tipp mit den Gruppen.

Ich habe es jetzt folgendermaßen gelöst. Die richtige Lösung zu finden hat mich ganz schön Nerven gekostet.


result_regEx = re.findall(r"[=](.*)",r.text, re.MULTILINE)

Aufruf der Ergebnisse:

print(result_regEx[0])
print(result_regEx[1])
print(result_regEx[2])
print(result_regEx[3])

bzw.

for r in result_regEx:
tue etwas...

Diese Regular Expressions sind echt nicht so leicht zu verstehen. Vor allem wenn man nur jedes Schaltjahr damit macht.

Trotzdem Danke.

Grüße
utgmk