【问题标题】:Using Regex Global Variable with Ruby gsub将正则表达式全局变量与 Ruby gsub 一起使用
【发布时间】:2012-08-08 02:04:51
【问题描述】:

我正在尝试将正则表达式全局变量与 ruby​​ gsub 一起使用!方法。

我的想法是这样的:

MyTextString.gsub!(/regex expression/,$1)

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

【问题讨论】:

  • 您可以将$1gsub 的块形式一起使用。

标签: ruby regex


【解决方案1】:

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

此外,“我的正则表达式不起作用”让人难以提供帮助。一个更好的短语是解释为什么它不起作用(之后字符串相同,或者引发错误等),并提供重现问题所需的数据(字符串和正则表达式)。

str = "abcdefg"
str.gsub!(/a(.)c/, '\1')
str # => "bdefg"

【讨论】:

  • 谢谢。关于我的问题的观点,感谢反馈。关于 $1,我假设在整个 gsub 命令完成之前不会发生匹配。再次感谢。
  • 这并不是说“直到整个命令完成才进行匹配”。调用方法时,方法的参数会在方法执行之前进行评估。因此,如果您执行/regexp/.gsub("str",$1)首先 Ruby 将评估"str"$1然后 它执行gsub$1 是一个全局变量,它在正则表达式匹配后由 Ruby 解释器设置。因此,如果您只是进行了正则表达式匹配(在前一行),$1 将被设置,而 that(上一个)匹配的值将成为gsub 的第二个参数。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
  • 2015-05-29
相关资源
最近更新 更多