1

row[/\w+/]在以下情况下,这条线到底在做什么?

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

我知道第一个值是从rows中删除的,它的值都被传递到块中并被从块返回的值替换。但是[/\w+/]对价值有什么影响?在这种情况下,每一行都是一个字母数字字符串数组。

4

2 回答 2

3

两个斜杠之间的任何内容都是正则表达式。在这种情况下,\w匹配任何单词字符(A-Z、和),并且a-z表示1 个或多个字符。因此,此代码将在给定字符串中找到第一次出现的单词并丢弃其余单词。0-9_+

于 2012-10-08T18:16:01.083 回答
3

您可以在此处[]查看字符串索引运算符的工作原理。

例如,如果您传递一个数字 ( row[5]),它会返回一个包含位置 5 的字符的子字符串(0 是第一个)。但是当使用正则表达式而不是数字时,它会返回与正则表达式匹配的第一个子字符串。

在这种特殊情况下,正则表达式匹配一个或多个单词字符 AZ、az、0-9 和 _

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