Je voudrais écrire un script qui prend un argument qui pourrait ressembler à ceci:Comment puis-je analyser une chaîne contenant des caractères génériques et des classes de caractères dans Ruby?
abc(ag)de*
a
, b
, c
sont des caractères littéraux.
(ag)
signifie «an 'a' ou 'g'».
*
signifie une lettre ou un chiffre.
Je veux que le script crée un tableau de toutes les chaînes possibles que l'entrée pourrait représenter. (Le but est de vérifier s'ils sont des noms de domaine disponibles.)
L'entrée pourrait aussi être quelque chose comme abc(ag)de(mnlop)
où il y a plus que sur la classe de caractères.
On dirait que la première tâche est de le diviser en un tableau ou des tableaux, de sorte que le premier exemple serait ...
[
['a'],
['b'],
['c'],
['a', 'g'],
['d'],
['e'],
[
'a', 'b', 'c', 'd', 'e', 'f', 'g',
# etc...
]
]
C'est là que je suis bloqué. Je ne sais pas comment le diviser en morceaux comme ça.
Des suggestions sur la façon de l'aborder?
Il manque un mot dans le titre entre "a" et "that". Je ne suis pas sûr de ce que le mot correct serait ("chaîne"?), Donc vous devriez corriger cela;) – OregonGhost
Vous pouvez trouver la réponse C# j'ai posté à http://stackoverflow.com/questions/710670/c-permutation -of-an-array-of-arraylists/710716 # 710716 utile. Dans votre cas, les tableaux seraient ceux que vous générez déjà pour votre premier stask. L'algorithme récursif de base devrait être relativement facile à traduire en une solution à votre problème. Mais je ne connais pas Ruby alors je te laisse ou quelqu'un d'autre. – Brian