正規表現を学習しようとしていて、私が問題を抱えているパターンを見つけようとしています。 xの値は?言語はGroovyです。この正規表現パターンが結果をプリントアウトする理由を確かめてください
x=(("World Hotel =~ /^(W....)\s+H(.*)$/)[0][2])
私は正規表現自体に従うことができますが、最後の2つの角括弧の値は私にとって謎です。印刷された値は 'otel'です、なぜ誰かがこれを説明できますか?
正規表現を学習しようとしていて、私が問題を抱えているパターンを見つけようとしています。 xの値は?言語はGroovyです。この正規表現パターンが結果をプリントアウトする理由を確かめてください
x=(("World Hotel =~ /^(W....)\s+H(.*)$/)[0][2])
私は正規表現自体に従うことができますが、最後の2つの角括弧の値は私にとって謎です。印刷された値は 'otel'です、なぜ誰かがこれを説明できますか?
正規表現は/
で終了することに注意してください。だから我々は、正規表現^(W....)\s+H(.*)$
に対して文字列World Hotel
と一致する式
"World Hotel =~ /^(W....)\s+H(.*)$/
を持っています。これにより、World
が最初のグループに、otel
が2番目のグループに追加されます。最初のキャプチャグループでは、文字列の先頭に大文字のW
が必要で、その後に任意の4文字が続きます。その後、空白が0以外の任意の長さにマッチし、その後に大文字のH
が続きます。最後のキャプチャグループは、最後まで文字列の残りの部分と一致します。
は、私が唯一のインデックス式その後[0]
と[2]
はそれぞれ、その試合([2]
)の最初の(そして唯一の)試合([0]
)と第二のキャプチャグループを取得すると推測できるのGroovyを使ったことがないました。それはあなたが見ている結果を説明するでしょう。
また、閉じ括弧が1つ多くあるようです。
ありがとうございます。私はキャプチャグループが今何をしているのか理解しています。私は彼らの前に不正確なコンテキストを考えていました。 –
言語を指定すると役立ちます。 2番目の括弧はマッチグループインデックスです。おそらく最初の試合を意味するでしょう。 – Ivan
どの言語でも構文エラーのように見えます – Aprillion