java - 尝试理解和重现正则表达式模式

标签 java regex string

我目前正在尝试进一步了解模式和匹配器,并发现了以下代码:

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>"...是什么意思? ?

最佳答案

What would be a valid input here?

addPart foo+42:bar

...how this would look like for the input-pattern...

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

...what is the meaning of...

另请注意 %sString.format 的变量引用。它也不是正则表达式运算符。

关于java - 尝试理解和重现正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60240171/

相关文章:

java - Java 如何知道 void 方法何时完成其方法体?

mysql - 使用 SQL 来匹配查询字符串中的字符

javascript - 正则表达式可以匹配字符串开头或结尾的字符(但不能同时匹配两者)吗?

java - 如何使用java中opencv的Imgproc.compareHist方法判断两张图片的相似度?

java - 使用 Java 8 构造时创建 Bean 时出现 ArrayOutOfBoundsException

java - FragmentTabHost - 没有已知标签为空的标签

regex - 查找所有 DOM 事件监听器的正则表达式

java - 如何从java字符串中删除[]和()

javascript - 检查 JavaScript 字符串是否为 URL

c# - 在文本框中多次打印字符串 C#