这个特定的正则表达式做了什么?

Pro*_*uce 0 regex

正则表达式是:

/^\/node?(?:\/(\d+)(?:\.\.(\d+))?)?/
Run Code Online (Sandbox Code Playgroud)

我可以理解,/在开头和结尾都是正则表达式分隔符,也是^\/node为了一个字符串开头/node的事情正在发生之后击败我!

Ame*_*lia 5

你应该考虑使用像RegexBuddy这样的工具.它将解释给定正则表达式中的所有内容,以及它如何编译以及如何分支.

假设PCRE或类似的:

   /                    //begin
        ^               //start of string
        \/              //literal /
        node?           //I assume node is optional, normally it'd be (node)?
                        //? makes the previous expression optional
        (
             ?:         //non-capturing group (think of it like dont capture <this>)
             \/         //literal /
             (\d+)      // one or more digits, 0-9
             (
                  ?:    // another non-capturing group
                  \.\.  // literal ..
                  (\d+) // one or more digits 0-9
             )
             ?         // optional once more
        )
        ?              // make the previous group optional
    /                  // end
Run Code Online (Sandbox Code Playgroud)

  • `?:`不是负面的先行.这是一个非捕获组.我不知道任何正则表达式引擎/环境.使用`?:`作为负向前瞻...... (3认同)