Forum: PC-Programmierung Regulärer Ausdruck


von Walter Tarpan (Gast)


Lesenswert?

Hallo zusammen,
Ich suche gerade nach einem Regulären Ausdruck, der mir den Inhalt von 
einem String des Typs Key=value; zurückgibt, also z.B. in
" blablabla Hund=Val1,Val2,Val3; bla bla fla"
für das Schlüsselwort "Hund" den String "Val1,Val2,Val3".

Andererseits sehr ich das als einen guten Grund, sich mal mit regulären 
Ausdrücken zu beschäftigen. Kennt jemand eine gute Einführung (gerne 
auch als gedrucktes Buch)?

Viele Grüße
W.T.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?


von Jan S. (jevermeister)


Lesenswert?

Wenn Lookbehind & Lookahead erlaubt sind:

(?<=Hund=)[^;](?=;)

(?<=Hund=) Look behind -> Wenn vor dem Ausdruck Hund= steht

[^;]* Alles außer ; matchen. Gibt auch "leere" Strings zurück, da * für 
0 oder mehr steht. Alternativ wenn er keine leeren Strings matchen soll 
ein +, dann ist es 1 oder mehr Zeichen im String.

(?=;) Lookahead. Wenn hinter dem Ausdruck ein ; ist

Damit kannst du statt Hund deinen eigenen Key einsetzen und bekommst den 
String zurück. Aber bitte auch nachvollziehen warum.

: Bearbeitet durch User
von Daniel (Gast)


Lesenswert?

python,ruby,perl sind deine Freunde :)

hier python
1
>>> import re
2
>>> pattern = re.compile(r'(\w+)\s*=\s*(.+?);')
3
>>> pattern.findall("a=1; abcd x= 100; ")
4
[('a', '1'), ('x', '100')]

hier wirst du gut geholfen ...
https://docs.python.org/2/howto/regex.html

von Walter Tarpan (Gast)


Lesenswert?

Danke für die Buchtipps und die Beispiele!

Viele Grüße
W.T.

von Jan S. (jevermeister)


Lesenswert?

Habe gerade einen Denkfehler festgestellt.
Es geht sogar noch kürzer, da er bei einem ; ohnehin stoppt.

(?<=Hund=)[^;]*

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.