2017-08-24 7 views
0

Je souhaite créer une expression glob qui reconnaît les noms de fichiers qui ne comportent aucun point (point) et utilise cette expression dans le code Ruby. Je réalise que les expressions globales ordinaires ne peuvent pas faire cela. Cependant, bash extglob a une syntaxe qui peut gérer cela. Est-il possible d'utiliser un modèle de style bash extglob dans Ruby, soit en utilisant des bibliothèques Ruby de base, ou des gemmes tierces?Style de syntaxe Extglob correspondant dans Ruby

J'ai essayé d'utiliser File::FNM_EXTGLOB, mais cela n'a pas fonctionné. Ce qui suit est un scénario simplifié pour vérifier si File::FNM_EXTGLOB a la syntaxe exacte même que bash extglob, et il ne semble pas être le cas:

File.fnmatch("myfile_+[0-9].txt", "myfile_123.txt", File::FNM_EXTGLOB) 

En outre, le English-language et Japanese-language documentation de File.fnmatch parler seulement File::FNM_EXTGLOB vous permettant pour utiliser une union de deux possibilités telles que File.fnmatch('c{at,ub}s', 'cats', File::FNM_EXTGLOB).

Des alternatives à l'utilisation d'une expression glob seraient d'aller aux expressions régulières, ou éventuellement using the operating system to do the globbing itself, mais je préfère ne pas descendre ces chemins si possible.

Répondre

1

La documentation à laquelle vous avez lié décrit tout ce qui peut être fait avec FNM_EXTGLOB dans Ruby; c'est-à-dire que les accolades sont la seule fonctionnalité supplémentaire que vous obtenez en utilisant ce drapeau. Je ne sais pas s'il existe des bibliothèques externes mais je doute qu'il y en ait.