RegEx Python

#3126729
Lesenswert?

Hallo an alle Python-Programmierer,

ich würde gerne aus einem String mit Hilfe der re-Funktion in Python 
einzelne Teile extrahieren.

Hier der String:
00000010(00007273)

Ich würde gerne den Wert VOR der Klammer (hier: 00000010) und den Wert 
IN der Klammer (hier 7273) einzeln bekommen.

Meine Versuche mit:

 m = re.search(r"(.*)((.*))", data)

haben leider nicht geklappt.

Gruß,

Michi
#3126732
Lesenswert?

Es kommt noch eine kl. Ergänung...

Der String ist doch etwas komplizierter als gedacht - es wurde nicht 
alles in der Konsole dargestellt.

Hier der passende String

('\x0200000010(00007336)\x03\x02',)


Aus diesem String will ich den Wert vor der Klammer ohne  dem "('\x02" 
(also 00000010) und den Wert in der Klammer (000007336) bekommen.
Gast #3126746
Lesenswert?

In Ruby etwa so:
1
/(?:\\x)(\d+)(?:\()(\d+)/.match('\x0200000010(00007336)\x03\x02').to_a[1,2]
2
=> ["0200000010", "00007336"]
In Python bin ich nicht so fit, wird wohl ähnlich sein, aber nicht so 
schön.

Die () im String wirst Du womöglich durch \ escapen müssen, ebenso das \ 
im String. Jedenfalls in Ruby.

Und übrigens:

>haben leider nicht geklappt.

ist eine schlechte Problembeschreibung.
#3126749
Lesenswert?

Hallo,

vielen Dank für Eure Hilfe, uns ja, die Beschreibung war nicht ganz so 
gut.

Hier nochmal der zweite Anlauf.

Also der String sieht fast wie im ersten Posting aus- hier der richtige:
\x0200000010(00007552)\x03\x0e

(beim zweiten Posting hat schon das RegEx etwas zugeschlagen...)

Mein Python-RegEx sieht so aus:
m = re.search("(.*)(\d\d)\((.*)\)(.*)", data)

Mit "print m.groups()" bekomme ich auch das Array der Stringzerlegung 
nun angezeigt:
('\x02000000', '10', '00007552', '\x03\x06')
Ich habe also die beidne gesuchen Werte - nur noch nicht einzeln.

Wenn ich jetzt "print m.groups(2)" ausführe bekomme ich leider immer 
noch den gleichen String wie bei m.groups().

Wie kann ich mir jetzt die einzelnen Teile anzeigen lassen ?
Moderator #3126819
Lesenswert?

Michael A. schrieb:
> es muss m.group(x) und NICHT m.groups(x) heißen !!

Noch ein kleiner Tipp: Falls du alle vier Gruppen in getrennten
Variablen weiterverarbeiten möchtest, ist es eleganter,
1
  var1, var2, var3, var4 = m.groups()

zu schreiben, anstatt jede Gruppe mit einem eigenen m.group(i)-Aufruf
aus dem Match zu extrahieren (var1 … var4 sind dabei natürlich durch
aussagekräftige Variablennamen zu ersetzten).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren