Пытаясь понять и воспроизвести шаблон Regex - PullRequest
0 голосов
/ 15 февраля 2020

В настоящее время я пытаюсь понять Pattern и Matcher немного больше и нашел следующий код:

private static final Pattern PATTERN = Pattern.compile(
            String.format("addPart%s(?<assembly>%s)\\+(?<amount>%s)%s(?<part>%s)",
                    InOutputStrings.COMMAND_SEPARATOR,
                    InOutputStrings.NAME_PATTERN,
                    InOutputStrings.NUMBER_PATTERN,
                    InOutputStrings.INNER_SEPARATOR,
                    InOutputStrings.NAME_PATTERN));

    private String assemblyName;
    private int amount;
    private String partName;

    ...

    assemblyName = matcher.group("assembly");
    amount = tryParse(matcher.group("amount"));
    partName = matcher.group("part");

, где

    NAME_PATTERN("[a-zA-Z]+"),
    NUMBER_PATTERN("(?!(0[0-9]))[0-9]+"),
    COMMAND_SEPARATOR(" "),
    ARGUMENT_SEPARATOR(";"),
    INNER_SEPARATOR(":")

Что будет правильным вводом здесь?

Может кто-нибудь показать мне, как это будет выглядеть для шаблона ввода

"add track <startPoint> -> <endPoint>"?

Я работаю над шаблоном командной строки, и это было бы хорошим способом реализации синтаксического анализа ввода.

Кроме того, что означает "?", "\\+" and "<assembly>"...?

1 Ответ

0 голосов
/ 15 февраля 2020

Каким будет допустимый ввод здесь?

addPart foo+42:bar

... как это будет выглядеть для шаблона ввода .. .

add track (?<startPoint>[a-zA-Z]+) -> (?<endPoint>[a-zA-Z]+)

... в чем смысл ...

Также обратите внимание, что %s является ссылкой на переменную для String.format. Это также не оператор RegEx.

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