使用Regex全局变量和Ruby gsub

Mut*_*tor 2 ruby regex

我正在尝试使用ruby gsub的正则表达式全局变量!方法.

我的想法是这样的:

MyTextString.gsub!(/regex expression/,$1)
Run Code Online (Sandbox Code Playgroud)

这就是我接近它的方式,但它不起作用.这是可能的,还是我的正则表达式无效.

Jos*_*eek 7

使用'\1'而不是$1($1引用一个尚不存在的变量,因为你尚未匹配正则表达式)

此外,"我的正则表达式无效"使得很难提供帮助.一个更好的短语将解释为什么它不起作用(后来字符串相同,或引发错误,或其他),并提供重现问题所需的数据(字符串和正则表达式).

str = "abcdefg"
str.gsub!(/a(.)c/, '\1')
str # => "bdefg"
Run Code Online (Sandbox Code Playgroud)

  • 这并不是"在整个命令完成之前不会发生匹配".调用方法时,在方法执行之前*会计算方法的参数.因此,如果你执行`/regexp/.gsub("str",$ 1)`,*首先*Ruby将评估`"str"`和`$ 1`,*然后*它执行`gsub`.`$ 1`是一个全局变量,在regexp匹配后由Ruby解释器设置.因此,如果你刚刚进行了正则表达式匹配(在前一行),将设置`$ 1`,**(previous)匹配的值将成为`gsub`的第二个参数. (2认同)