1

row[/\w+/]次の状況でラインは正確に何をしていますか?

fields = rows.shift.map{ |row| 
  row[/\w+/]
}

最初の値が行から削除され、その値がすべてブロックに渡され、ブロックから返された値に置き換えられることを理解しています。しかし[/\w+/]、その価値に何をしているのでしょうか?この場合、各行は英数字の文字列の配列です。

4

2 に答える 2

3

2つのスラッシュの間はすべて正規表現です。この場合\w、任意の単語文字(、、、および)に一致A-Zし、はa-z1つ以上の文字を示します。したがって、このコードは、指定された文字列内の単語の最初の出現を検索し、残りを破棄します。0-9_+

于 2012-10-08T18:16:01.083 に答える
3

ここで、文字列インデックス演算子がどのように機能するかを確認[]できます

たとえば、数値(row[5])を渡すと、位置5(0が最初)の文字を含むサブストリングが返されます。ただし、数値の代わりに正規表現を使用すると、正規表現に一致する最初の部分文字列が返されます。

この特定のケースでは、正規表現は1つ以上の単語文字AZ、az、0-9、および_と一致しています。

"abcd efg hij"[/w+/] #=> "abcd"
"abcd_efg hij"[/w+/] #=> "abcd_efg"
于 2012-10-08T18:19:34.427 に答える