Aus Regular Expression String generieren

StehtimSchilf

Erfahrenes Mitglied
Hi Forum

Ich muss auf Basis eines Regular Expressions einen String erstellen.

Bspw.:
in: [A-z][1-9]?
out: A1 oder b8 oder Q

Ich kann nicht einen Random-String erstellen und den dann prüfen ob es passt, da der Zeichenraum viel zu gross wird, resp. die RegExps nicht immer so simpel sind wie obiges Beispiel. Für Java habe ich was gefunden, doch verwendet diese Klasse noch ein zusätzliches gröberes Java-Paket, wodurch die Konvertierung in C# komplexer wird.

Ideen?

cheerioh
SiS
 
Hallo StehtimSchilf,

leider ist mir nichts bekannt, das Dein Problem direkt "erschlagen" würde,

aber ich würde an Deiner Stelle mit Chars (ASCII) arbeiten, dann kannst Du die Dezimalen Werte prüfen und danach das ASCII umwandeln, allerdings musst Du die Grenzwerte definieren, wo halt a anfängt, also 97 Dez. und z aufhört,was dann 122 Dez. wäre, das gleiche Spiel mit Großbuchstaben und Zahlen und dann musst Du nur noch die Entschlüsselung des Regulären Ausdrucks vornehmen, schon gehts ab....


Hier ein Link zu einer ASCII-Tabelle: http://www.asciitable.com/


Viele Grüße
 
Hallo VScan

"schon gehts ab..." das ist ja der Grund, warum die Java-Lösung einen zusätzlichen "Automaten" (theo. Informatik) verwendet, was auch so korrekt ist. Für ein Subset von regulären Ausdrücken funktioniert es bereits bspw.: (Hallo Welt)[A-z]{1,33} oder (+){1,1}[1-9]{1,2}[rot | grün | gelb]{1,3} Aber für Komplexeres, aben. oh ja "gehts ab".

Auf Quantoren (+, *, ?) habe ich verzichtet. Es ist Pflicht, diese immer mit {min, max} anzugeben. Auch Zeichensätze (\d oder \w oder \s) sind nicht "erlaubt". Diese müssen mit [x-y] oder mit [x | y | z] angegeben werden.

Ich kann mir aber nicht vorstellen, dass ich der erste bin, der auf Grund eines RegExp das Wörterbuch erstellen muss.

Link auf vorhandene Lösungen sind immer gerne gesehen.

cheerioh
SiS
 
Zurück