正規表現は次のとおりです。
/^\/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 番目の一致グループに取り込まれます