2016-08-13 3 views
0

正規表現を学習しようとしていて、私が問題を抱えているパターンを見つけようとしています。 xの値は?言語はGroovyです。この正規表現パターンが結果をプリントアウトする理由を確かめてください

x=(("World Hotel =~ /^(W....)\s+H(.*)$/)[0][2]) 

私は正規表現自体に従うことができますが、最後の2つの角括弧の値は私にとって謎です。印刷された値は 'otel'です、なぜ誰かがこれを説明できますか?

+0

言語を指定すると役立ちます。 2番目の括弧はマッチグループインデックスです。おそらく最初の試合を意味するでしょう。 – Ivan

+1

どの言語でも構文エラーのように見えます – Aprillion

答えて

3

正規表現は/で終了することに注意してください。だから我々は、正規表現^(W....)\s+H(.*)$に対して文字列World Hotelと一致する式

"World Hotel =~ /^(W....)\s+H(.*)$/ 

を持っています。これにより、Worldが最初のグループに、otelが2番目のグループに追加されます。最初のキャプチャグループでは、文字列の先頭に大文字のWが必要で、その後に任意の4文字が続きます。その後、空白が0以外の任意の長さにマッチし、その後に大文字のHが続きます。最後のキャプチャグループは、最後まで文字列の残りの部分と一致します。

は、私が唯一のインデックス式その後[0][2]はそれぞれ、その試合([2])の最初の(そして唯一の)試合([0])と第二のキャプチャグループを取得すると推測できるのGroovyを使ったことがないました。それはあなたが見ている結果を説明するでしょう。

また、閉じ括弧が1つ多くあるようです。

+0

ありがとうございます。私はキャプチャグループが今何をしているのか理解しています。私は彼らの前に不正確なコンテキストを考えていました。 –

関連する問題