Парсинг входящих параметров args в Java

223
27 апреля 2018, 15:35

Есть такая строка запуска:

java -jar smart-file-handler-cli -p -s xml \
    -o /path/result.log 'text for search' ./

Вопрос о аргументах приложения:

-p -s xml -o /path/result.log 'text for search' ./

Как их удобнее всего распарсить? При том, что после -o, это всё одно значение опционального аргумента.

Попробовал сделать regex:

/((-[\w]) (.*)?) ((-[\w]) (.*)?)/g

Пробовал применить парсеры команды, такие как: commons cli, google options. Но все они не спарсили адекватно опцию -o.

Может доработать ругулярку? Или как можно еще?

Answer 1
   Option option1 = Option
            .builder()
            .longOpt("p")
            .argName("p")
            .build();
    Option option2 = Option
            .builder()
            .longOpt("s")
            .argName("s")
            .hasArgs()
            .build();
    Option option3 = Option
            .builder()
            .longOpt("o")
            .argName("o")
            .hasArgs()
            .numberOfArgs(3)
            .build();
    CommandLineParser parser = new DefaultParser();
    CommandLine parse = parser.parse(new Options().addOption(option1).addOption(option2).addOption(option3), args);
    for (Option o : parse.getOptions()) {
        System.out.println(o.getLongOpt() + " " +  Arrays.toString(o.getValues()));
    }

Т.е. потом склеить o.getValues() для вашего случая

Входные аргументы

-p -s xml -o /path/result.log 'text for search' ./

Вывод работы программы

p null s [xml] o [/path/result.log, text for search, ./]

READ ALSO
Как подойти к изучению Spring?

Как подойти к изучению Spring?

Ничего не знаю про Spring, но стоит задача научиться ему за две неделиКак подойти правильно и эффективно к обучению? Книги? Статьи?

233
Настроить соединение jComboBox с JList

Настроить соединение jComboBox с JList

На форме у меня расположено два элемента jList и ComboBox которые получают информацию из бд SQLiteПри запуске программы я получаю пустой jList, хотя в ComboBox...

232