row[/\w+/]
次の状況でラインは正確に何をしていますか?
fields = rows.shift.map{ |row|
row[/\w+/]
}
最初の値が行から削除され、その値がすべてブロックに渡され、ブロックから返された値に置き換えられることを理解しています。しかし[/\w+/]
、その価値に何をしているのでしょうか?この場合、各行は英数字の文字列の配列です。
row[/\w+/]
次の状況でラインは正確に何をしていますか?
fields = rows.shift.map{ |row|
row[/\w+/]
}
最初の値が行から削除され、その値がすべてブロックに渡され、ブロックから返された値に置き換えられることを理解しています。しかし[/\w+/]
、その価値に何をしているのでしょうか?この場合、各行は英数字の文字列の配列です。
2つのスラッシュの間はすべて正規表現です。この場合\w
、任意の単語文字(、、、および)に一致A-Z
し、はa-z
1つ以上の文字を示します。したがって、このコードは、指定された文字列内の単語の最初の出現を検索し、残りを破棄します。0-9
_
+
ここで、文字列インデックス演算子がどのように機能するかを確認[]
できます。
たとえば、数値(row[5]
)を渡すと、位置5(0が最初)の文字を含むサブストリングが返されます。ただし、数値の代わりに正規表現を使用すると、正規表現に一致する最初の部分文字列が返されます。
この特定のケースでは、正規表現は1つ以上の単語文字AZ、az、0-9、および_と一致しています。
"abcd efg hij"[/w+/] #=> "abcd"
"abcd_efg hij"[/w+/] #=> "abcd_efg"