Hallöchen erstmal, ich bin der Neue und ich will gleich mal ein bisschen rumnerven...
Wie der Titel schon sagt, habe ich ein Problem mit Regex.
Ich möchte aus einem bliebigen String evtl. enthaltene Registry Schlüssel auslesen und weiterverarbeiten.
In RegexBuddy habe ich auch ein funktionierendes Pattern erstellen können, aber wenn ich versuche, diesen mithilfe von StringRegExpReplace zu benutzen, klappts nicht.
Zur Verdeutlichung, hier mal ein Screenshot:
[Blockierte Grafik: http://i.imgur.com/ImH4s.png]
Was ich noch nicht hinbekommen habe, ist ein Leerzeichen im abschliessenden Verzeichnis zu erkennen (z.B. HKEY_CURRENT_USER\Control Panel\Microsoft Input Devices) und Links mit Zeilenumbruch (siehe letztes Beispiel im Screenshot).
Falls dafür jemand ne Lösung hat, wäre ich auch nicht abgeneigt
Das ist aber nicht so tragisch, wichtiger ist mir die Umsetzung in Autoit. Folgendes Mini-Script liefert leider nicht die erwünschten Ergebisse:
[autoit]Do
$RegKey = InputBox( "Eingabe", "Hier Registry Schlüssel einfügen:", Default, Default, 400, 130)
$RegeXed_find = StringRegExpReplace( $RegKey, "((?i)(HK)(.+)(\\\w*))", "$1") ;==> Pattern 1
$RegeXed_space = StringRegExpReplace( $RegKey, "(\s{0,}\\\s{0,})", "\") ;==> Pattern 2
$RegKey = MsgBox( 5, "", "Pattern 1: " & $RegeXed_find & @CRLF & @CRLF & "Pattern 2: " & $RegeXed_space)
Until $RegKey = 2
Exit
Ich vermute, mein Fehler liegt im Backreference Wert ("$1"). Dort habe ich aber alle möglichen Kombinationen versucht, z.B.:
Auch für das Löschen von Leerzeichen vor und nach dem Backslash (\) habe ich ein Pattern erstellt, daß einwandfrei in RegexBuddy funktioniert (auch der Zeilenumbruch im letzten Beispiel wird entfernt), aber in Autoit schaff ichs nicht (Pattern 2 im Script):
[Blockierte Grafik: http://i.imgur.com/aiLcw.png]
Das läßt sich natürlich auch mit StringReplace bewerkstelligen, aber Regex wäre mir schon lieber...
Habe ich irgenwo Fehler in den Pattern oder bin ich einfach nur unfähig, StringRegExpReplace richtig zu "bedienen"?
Eine weitere Frage hätte ich noch:
Gibts eine Möglichkeit, Text mit Zeilenumbruch per Rechtsklick aus der Zwischenablage in ein Inputfeld zu bekommen?
Das Einlesen mit ClipGet() in eine Variable und darauf folgendes Einfügen mit GUICtrlSetData klappt, Rechtsklick nicht.