正規表現は次のとおりです。
/^\/node?(?:\/(\d+)(?:\.\.(\d+))?)?/
/最初と最後が正規表現の区切り文字であり、これが私を打ち負かした後に何が起こっているのか^\/nodeを表す文字列であることも理解できます。/node
正規表現は次のとおりです。
/^\/node?(?:\/(\d+)(?:\.\.(\d+))?)?/
/最初と最後が正規表現の区切り文字であり、これが私を打ち負かした後に何が起こっているのか^\/nodeを表す文字列であることも理解できます。/node
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
?これに続くものはすべて「オプション」です
(?:非捕獲グループ
\/逃げた /
(\d+)- 1 桁以上 - キャプチャ グループ "()" にも含まれる
(?:また
\.- 逃げた。
\.- また
(\d+)- 前と同じ
)?)?-よくわかりません-これはどのような正規表現ですか?
そうです/、最初の はパターン区切り文字です。簡単にするためにそれらを削除しましょう
^\/node?(?:\/(\d+)(?:\.\.(\d+))?)?
は(?:...)非キャプチャ グループです。これは、マッチグループに引っかからないグループです。?:これは最適化です。パターンをより明確にするために を削除しましょう。
^\/node?(\/(\d+)(\.\.(\d+))?)?
は\エスケープ文字なので、\/実際には単なる a/ですが、これらはパターンの開始と終了を示すため、エスケープする必要があります。は.(ほぼ) 任意の文字に一致するため、エスケープする必要もあります。
は?、後退パターンをオプションに()?します。つまり、括弧内にあるものが 0 回または 1 回出現することを意味します。
^文字列の開始を示します\/node?一致/nodeまたは/nod\/(\d+)/1 つ以上の数字 ( ) が後に続く一致に一致し\d+ます。数字は最初の一致グループに取り込まれます(\.\.(\d+))?..1 つ以上の数字 ( ) が後に続く一致に一致し\d+ます。数字は 2 番目の一致グループに取り込まれます