Ich möchte ein Skript schreiben, das ein Argument, die wie folgt aussehen könnte:Wie kann ich eine Zeichenfolge analysieren, die Platzhalter und Zeichenklassen in Ruby enthält?
abc(ag)de*
a
, b
, c
sind wörtliche Zeichen.
(ag)
bedeutet "ein 'a' oder ein 'g'".
*
bedeutet einen Buchstaben oder eine Zahl.
Ich möchte das Skript ein Array aller möglichen Zeichenfolgen erstellen, die die Eingabe darstellen könnte. (Der Zweck ist, zu überprüfen, ob sie verfügbare Domain-Namen sind.)
Die Eingabe könnte auch etwas wie abc(ag)de(mnlop)
sein, wo es mehr als eine Zeichenklasse gibt.
Scheint, wie die erste Aufgabe es in ein Array oder Arrays aufgeteilt ist, so ist das erste Beispiel wäre ...
[
['a'],
['b'],
['c'],
['a', 'g'],
['d'],
['e'],
[
'a', 'b', 'c', 'd', 'e', 'f', 'g',
# etc...
]
]
Dies ist, wo ich stecken. Ich weiß nicht, wie ich es in Stücke aufteilen soll.
Irgendwelche Vorschläge, wie man es angehen kann?
Im Titel fehlt zwischen "a" und "that" ein Wort. Ich bin nicht sicher, was das richtige Wort wäre ("String"?), Also sollten Sie das beheben;) – OregonGhost
Sie können die C# -Antwort finden, die ich unter http://stackoverflow.com/questions/710670/c-permutation veröffentlicht habe -von-einem-Array-of-arraylists/710716 # 710716 hilfreich. In Ihrem Fall würden die Arrays diejenigen sein, die Sie bereits für Ihren ersten Sask generieren. Der grundlegende rekursive Algorithmus sollte relativ einfach in eine Lösung für Ihr Problem übersetzt werden können. Aber ich kenne Ruby nicht, also überlasse ich es dir oder jemand anderem. – Brian