wri*_*mus 1 ruby regex capturing-group
我试图将我的正则表达式匹配的命名组分配给局部变量。例如,我试图捕获日期输入的字符串并引用命名组month和day局部变量:
input = "2015-01-24"
expr = /\d{4}-(?<month>\d{2})-(?<day>\d{2})/
input =~ expr #=> 0
Run Code Online (Sandbox Code Playgroud)
但是,month或者day是匹配后未定义的变量。我如何访问month和day作为局部变量?
根据Ruby doc,输入组变量名称将返回捕获的值(在本例中为“美元”)
/\$(?<dollars>\d+)\.(?<cents>\d+)/ =~ "$3.67" #=> 0
dollars #=> "3"
Run Code Online (Sandbox Code Playgroud)
我也很感激任何推荐的资源。
更仔细地阅读您引用的文档:
当命名捕获组与表达式左侧的文字正则表达式和 =~ 运算符一起使用时,捕获的文本也会分配给具有相应名称的局部变量。
您的代码:
input =~ expr
Run Code Online (Sandbox Code Playgroud)
没有在两个方面证实这一点:(1)expr不是文字正则表达式,而是分配给变量的正则表达式,(2)右侧有正则表达式。
如果您遵循文档,那么您可以将捕获称为局部变量。
| 归档时间: |
|
| 查看次数: |
1103 次 |
| 最近记录: |