Comment puis-je analyser des chaînes dans ruby comme le font de nombreux utilitaires de ligne de commande? J'ai des chaînes similaires à "command [--opt1=...] [--enable-opt2] --opt3=... arg1"
et des méthodes similaires à command(opt1,opt2,opt3,arg1...)
. Je veux laisser les arguments venir dans un ordre aléatoire, certains d'entre eux peuvent être optionnels.Ruby regexp pour analyser la ligne de commande
Au moment où je wrilte regexp chaque fois que je dois analyser nouvelle commande, comme par exemple pour analyser "--chan = your_CHANNEL Cafe Du Coin/section /"
J'ai cette expression régulière:
text = "lastpost --chan=0chan.ru /s/"
command = (text.match /^\w+/)[0]
args = text.gsub(/^\w+/,'')
if args =~ /[[:blank:]]*(--chan\=([[:graph:]]+)[[:blank:]]+)*\/?(\w+)\/?/
chan = $2
section = $3
do_command(chan,section)
else
puts "wrong args"
end
Je voudrais avoir create_regexp (opts, args), qui devrait produire une expression régulière.
Si vous avez (sous) commandes, consultez la gemme 'commander'. –