1

我正在尝试将我的正则表达式匹配的命名组分配给局部变量。例如,我正在尝试为日期输入捕获字符串并引用命名组monthday局部变量:

input = "2015-01-24" 
expr = /\d{4}-(?<month>\d{2})-(?<day>\d{2})/ 
input =~ expr #=> 0

但是,month或者day是匹配后未定义的变量。如何访问monthday作为局部变量?

根据Ruby 文档,键入组变量名称将返回捕获的值(本例中为“美元”)

/\$(?<dollars>\d+)\.(?<cents>\d+)/ =~ "$3.67" #=> 0 
dollars #=> "3"

我也很感激任何推荐的资源。

4

1 回答 1

6

仔细阅读您引用的文件:

当命名捕获组与表达式左侧的文字正则表达式和 =~ 运算符一起使用时,捕获的文本也会分配给具有相应名称的局部变量。

你的代码:

input =~ expr

在两个方面没有证实这一点:(1)expr不是文字正则表达式,而是分配给变量的正则表达式,(2)您在右侧有正则表达式。

如果您遵循文档,则可以将捕获称为局部变量。

于 2015-01-25T05:35:00.463 回答