【发布时间】:2012-08-08 02:04:51
【问题描述】:
我正在尝试将正则表达式全局变量与 ruby gsub 一起使用!方法。
我的想法是这样的:
MyTextString.gsub!(/regex expression/,$1)
这就是我接近它的方式,但它不起作用。这是可能的还是我的正则表达式不起作用。
【问题讨论】:
-
您可以将
$1与gsub的块形式一起使用。
我正在尝试将正则表达式全局变量与 ruby gsub 一起使用!方法。
我的想法是这样的:
MyTextString.gsub!(/regex expression/,$1)
这就是我接近它的方式,但它不起作用。这是可能的还是我的正则表达式不起作用。
【问题讨论】:
$1 与gsub 的块形式一起使用。
使用'\1' 而不是$1($1 引用一个尚不存在的变量,因为您尚未匹配正则表达式)
此外,“我的正则表达式不起作用”让人难以提供帮助。一个更好的短语是解释为什么它不起作用(之后字符串相同,或者引发错误等),并提供重现问题所需的数据(字符串和正则表达式)。
str = "abcdefg"
str.gsub!(/a(.)c/, '\1')
str # => "bdefg"
【讨论】:
/regexp/.gsub("str",$1),首先 Ruby 将评估"str" 和$1,然后 它执行gsub。 $1 是一个全局变量,它在正则表达式匹配后由 Ruby 解释器设置。因此,如果您只是进行了正则表达式匹配(在前一行),$1 将被设置,而 that(上一个)匹配的值将成为gsub 的第二个参数。跨度>