Lukas: Hilfe bei Regulärem Ausdruck

Beitrag lesen

Hi!

Ich benötige Hilfe bei einem Problem mit einem Regulären Ausdruck. Und zwar möchte ich alle Buchstaben (es können nur Buchstaben enthalten sein) aus einem String herausfiltern. Dabei sollen aber einige Buchstaben berücksichtigt werden.

Schon diese Schilderung ist wirr.

Also: Ich habe einen String. Dieser String enthält nur Buchstaben. Nun möchte ich alle Buchstaben, bis auf ein paar bestimmte, gematcht bekommen.

Mein regulärer Ausdruck sieht so aus (wobei a, s, und d die zu berücksichtigenden Buchstaben sind): [^asd]

Also
'¬§||¢¬§|§' =~ /[^asd]/ and print "TRUE!\n"

Wie bitte? Das verstehe ich nicht. Ich meinte: Mein regulärer Ausdruck sieht bis jetzt so aus: /[^asd]/. Allerdings funktioniert er ja nicht.

Der String, der durchsucht werden soll sieht so aus: asdhalloasd.

Also garantier immer 'asdhalloasd'
und nicht
"aaahallosssssss"
"aaa2546924||¢¬|¬73907sssssss"
"a0a"

Auch das verstehe ich nicht. Ich meinte: Mein String ist zum Beispiel "Donaudampschifffahrt". Und dann sollen alle Buchstaben bis auf "a" und "f" durch Unterstriche (pro Buchstabe ein Unterstrich) ersetzt werden (das ganze ist für HangMan. Das gesuchte Wort ist versteckt und bei jedem erratenem Buchstaben werden die richtigen Buchstaben aufgedeckt; dann ist es vielleicht besser zu verstehen warum ich das ganze will)

Nun möchte ich, dass hallo per Replace entfernt und durch Unterstriche ersetzt wird (Ergebnis = asd_____asd).

Wörtlich 'hallo' oder '485&(&&6'

Wie bitte? Wenn du meinst, ob auch "485&(&&6" im String vorkommen kann, dann nein. Nur Buchstaben.

Was du nämlich andeutest ist s/([asd])+hallo\1/$1_____$1/

Vielleicht meinst du aber:
s/([asd])+[^asd]+\1/$1________________________________________$1/

Ich weiß nicht was diese Ausdrücke machen. Aber ich muss nicht im regulären Ausdruck selber replacen. Das mache ich mit der VB6-Funktion Replace. Ich brauche nur einen regulären Ausdruck, der mir die gesuchten Buchstaben findet.

Könnt ihr mir sagen, wie der reguläre Ausdruck aussehen muss, damit das so funktioniert?

Nur wenn du die Kunst der guten Problembeschreibung pflegst.

Hier nochmal eine komplette Beschreibung: Ich programmiere mit VB6 Hangman (Galgenmännle). Das Spiel kennt sicherlich jeder. Es muss ein Wort erraten werden, indem einzelne Buchstaben erraten werden. Tippt der User auf einen falschen Buchstaben wird an der Figur ein Strich mehr gemalt. Ist die Figur fertig gemalt, dann hat der Spieler verloren.
Das gesuchte Wort ist "SELFHTML". Angezeigt wird aber "_ _ _ _ _ _ _ _". Tippt der Spieler jetzt auf ein "L" dann sollen diese eingesetzt werden: "_ _ L _ _ _ _ L"

Und dieses Einsetzen soll der reguläre Ausdruck erledigen. Dazu soll er bspw. alle Buchstaben bis auf "L" (siehe oberes Bsp) durch Unterstriche ersetzen.

Ich hoffe es ist so verständlich.

Viele Grüße, Lukas