为什么在Ruby中捕获命名组会导致“未定义的局部变量或方法”错误
发布时间:2020-12-17 03:47:43 所属栏目:百科 来源:网络整理
导读:我在 Ruby 2.0中使用正则表达式中的命名捕获时遇到问题.我有一个字符串变量和一个插值的正则表达式: str = "hello world"re = /w+//(?greeting#{re})/ =~ strgreeting 它引发了以下异常: prova.rb:4:in main': undefined local variable or method greeti
我在
Ruby 2.0中使用正则表达式中的命名捕获时遇到问题.我有一个字符串变量和一个插值的正则表达式:
str = "hello world" re = /w+/ /(?<greeting>#{re})/ =~ str greeting 它引发了以下异常:
但是,插值表达式在没有命名捕获的情况下工作.例如: /(#{re})/ =~ str $1 # => "hello" 解决方法
命名捕获必须使用文字
您遇到了Ruby的正则表达式库的一些限制. Regexp#=~方法限制命名捕获如下: >如果正则表达式不是文字,则不会发生分配. 您需要决定是否要在正则表达式中使用命名捕获或插值.你目前不能兼得. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |