Ruby 如何将正则表达式中的命名组分配给局部变量

Ruby 如何将正则表达式中的命名组分配给局部变量,ruby,regex,capturing-group,Ruby,Regex,Capturing Group,我试图将正则表达式匹配的命名组分配给局部变量。例如,我试图为日期输入捕获一个字符串,并将命名组month和day引用为局部变量: input = "2015-01-24" expr = /\d{4}-(?<month>\d{2})-(?<day>\d{2})/ input =~ expr #=> 0 我也非常感谢您推荐的资源。请仔细阅读您引用的文档: 当命名的捕获组与表达式左侧的文本regexp和=~运算符一起使用时,捕获的文本也会分配给具有相应名称的局部变量

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

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

我也非常感谢您推荐的资源。

请仔细阅读您引用的文档:

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

您的代码:

input =~ expr
在两个方面没有证实这一点:(1)
expr
不是文本regexp,而是分配给变量的regex,(2)您的regex位于右侧


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

请仔细阅读您引用的文档:

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

您的代码:

input =~ expr
在两个方面没有证实这一点:(1)
expr
不是文本regexp,而是分配给变量的regex,(2)您的regex位于右侧

如果您遵循文档,那么您可以将捕获引用为局部变量。

OP:也就是说,
/\d{4}-(?\d{2})-(?\d{2})/=~“2015-01-24”#=>0;月份#=>“01”;第24天#=>“24”
。左边是一个文本,与变量相对。谢谢,sawa,对局部变量的赋值对我来说是新的。OP:也就是说,
/\d{4}-(?\d{2})-(?\d{2})/=“2015-01-24”#=>0;月份#=>“01”;第24天#=>“24”
。左边是一个文本,与变量相对。谢谢,sawa,局部变量的赋值对我来说是新的。