Par exemple, étant donné le motif une fonction prendrait le motif et renvoie une matrice ou une liste contenant P> a_00, a_01, a_02, ... , a_98, a_99, ... , z_98, z_99
3 Réponses :
Premièrement, analyser l'expression et construire un arbre reflétant la structure syntaxique de l'expression régulière et inclure un nœud Terminator qui apparaît logiquement à la fin. Par exemple, dans la notation LISP, votre exemple peut ressembler à ceci:
if node is of form (repeat n): # non-variable repeat for i in 1 to n recurse into child recurse into threaded successor if node is of form (concat ...): recurse into first element # last element will recurse into successor if node is of form (literal x): emit x recurse into successor remove x if node is of form (charset ...): for each element in charset: emit element recurse into successor remove element if node is terminator: add string created thus far to final output list
Les réponses comme celle-ci font alors travailler. Merci pour une réponse aussi complète.
étant donné que vous pouvez comprendre la longueur des chaînes de longueurs correspondantes,
Utilisez Thrapl !! THRAX fournit des outils de ligne de commande pour interagir avec la boîte à outils openfst robuste. Vous pouvez probablement le trouver sur les gestionnaires de paquets tels que Voici un exemple de comment utiliser THRAX pour échantillonner une regex. Aujourd'hui, je voulais trouver un nom pour une bibliothèque que j'écris. Je voulais que le nom soit un acronyme pour Maintenant, le problème réduit l'échantillonnage des chaînes qui satisfont à cet acronyme. C'est là que la thrax est entrée. Nous pouvons d'abord écrire la regex dans un fichier Vous pouvez probablement deviner ce qui se passe. Pour chaque apt code> ou
Macports code>.
complet incorporé? MRF? (Optimisation | Inference) Toolkit Code>. Après avoir essayé de trouver un nom manuellement, j'ai abandonné et écrivit la regex suivante pour d'éventuels acronymes:
co? M? M? [IO] à? P>
grm code> comme celui-ci. P>
x? Code> J'ai spécifié que
x code> sera émis ou
'' ' code> sera sorti. Maintenant, nous pouvons compiler ce
GRM code> Fichier et des chaînes d'échantillonnage de la langue. P>
****************************************
comemoto
cmemot
****************************************
comemoto
comoto
****************************************
comemoto
comot
****************************************
comemito
coemito
****************************************
comemoto
coeot
****************************************
comemoto
cmeot
****************************************
comemito
coit
****************************************
comemoto
cemot
****************************************
comemoto
ceoto
C'est 5200 matchs. Sûr de vouloir l'avoir? Et désolé, je ne peux pas faire python ou perl.
Je serais aussi prudent. Le nombre de combinaisons possibles augmente de manière exponentielle par rapport à la longueur de la regex, de sorte que tout sauf chaînes courtes peut être très b> temps et mémoire consommant.
@etotheipi: Au lieu d'expliquer votre solution perçue au problème, dites-nous plutôt ce que vous essayez de réaliser ...
@Mitch Blé: Ceci est dans le top 10 des "Commentaires pour toujours". J'aimerais pouvoir le remettre plus d'une fois.