2012-10-08 40 views
1

row[/\w+/]在下列情況下究竟做了什麼?此代碼中行[/ w + /]的用途是什麼?

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

我明白的是,第一值是從除去,其值都傳遞到塊並通過從塊返回的值替換。但[/\w+/]對價值做什麼?在這種情況下,每一行都是一個字母數字字符串的數組。

回答

3

您可以看到字符串索引運算符[]如何工作here

例如,如果您傳遞一個數字(row[5]),它將返回包含位置5(0是第一個字符)的字符的子字符串。但是,如果使用正則表達式而不是數字,則會返回與正則表達式匹配的第一個子字符串。

在正則表達式是匹配的一個或多個單詞字符A-Z,A-Z,數字0-9該特定情況下,和_

"abcd efg hij"[/w+/] #=> "abcd" 
"abcd_efg hij"[/w+/] #=> "abcd_efg" 
3

兩個斜線之間的任何內容都是regular expression。在這種情況下,\w與任何單詞字符(A-Za-z,0-9_)匹配,+表示1個或多個字符。所以這段代碼會在給定的字符串中找到一個單詞的第一個出現,並丟棄其餘的單詞。

+0

感謝。我意識到這是一個正則表達式。那麼它會在空格或下劃線之後拒絕任何東西? – Undistraction

+1

\ w匹配下劃線 –

+0

@FrederickCheung謝謝。 – Undistraction

相關問題