Ruby регулярное выражение для анализа командной строки - PullRequest
1 голос
/ 02 июня 2010

Как мне разобрать строки в ruby, как это делают многие утилиты командной строки? У меня есть строки, похожие на "command [--opt1=...] [--enable-opt2] --opt3=... arg1" и методы, похожие на command(opt1,opt2,opt3,arg1...). Я хочу, чтобы аргументы поступали в случайном порядке, некоторые из них могут быть необязательными.

В данный момент я пишу регулярные выражения каждый раз, когда мне нужно проанализировать новую команду, как, например, разобрать "lastpost --chan = your_CHANNEL / section /"

У меня есть это регулярное выражение:

    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

Хотелось бы, чтобы у меня был create_regexp (opts, args), который должен производить регулярное выражение.

1 Ответ

1 голос
/ 02 июня 2010

Хорошо, я нашел optparse может сделать это для меня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...