0

正規表現は次のとおりです。

/^\/node?(?:\/(\d+)(?:\.\.(\d+))?)?/

/最初と最後が正規表現の区切り文字であり、これが私を打ち負かした後に何が起こっているのか^\/nodeを表す文字列であることも理解できます。/node

4

3 に答える 3

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
于 2013-08-10T18:59:51.873 に答える
3

?これに続くものはすべて「オプション」です

(?:非捕獲グループ

\/逃げた /

(\d+)- 1 桁以上 - キャプチャ グループ "()" にも含まれる

(?:また

\.- 逃げた。

\.- また

(\d+)- 前と同じ

)?)?-よくわかりません-これはどのような正規表現ですか?

于 2013-08-10T18:59:42.490 に答える
3

そうです/、最初の はパターン区切り文字です。簡単にするためにそれらを削除しましょう

^\/node?(?:\/(\d+)(?:\.\.(\d+))?)?

(?:...)非キャプチャ グループです。これは、マッチグループに引っかからないグループです。?:これは最適化です。パターンをより明確にするために を削除しましょう。

^\/node?(\/(\d+)(\.\.(\d+))?)?

\エスケープ文字なので、\/実際には単なる a/ですが、これらはパターンの開始と終了を示すため、エスケープする必要があります。は.(ほぼ) 任意の文字に一致するため、エスケープする必要もあります。

?、後退パターンをオプションに()?します。つまり、括弧内にあるものが 0 回または 1 回出現することを意味します。

  • ^文字列の開始を示します
  • \/node?一致/nodeまたは/nod
  • \/(\d+)/1 つ以上の数字 ( ) が後に続く一致に一致し\d+ます。数字は最初の一致グループに取り込まれます
  • (\.\.(\d+))?..1 つ以上の数字 ( ) が後に続く一致に一致し\d+ます。数字は 2 番目の一致グループに取り込まれます
于 2013-08-10T19:03:49.497 に答える