Ruby 使用正则表达式更改语法

Ruby 使用正则表达式更改语法,ruby,regex,Ruby,Regex,我在chef(配置管理工具)中的ruby语法方面遇到了一些问题 我要处理的区别是分配如下属性: runner = ChefSpec::Runner.new(platform: "ubuntu", version: version) runner = ChefSpec::Runner.new(:platform => "ubuntu", :version => version) 我需要能够在这两种语法之间切换,因为它们似乎在不同版本的chef/ruby中工作-我们将进行升级,但目前需

我在chef(配置管理工具)中的ruby语法方面遇到了一些问题

我要处理的区别是分配如下属性:

runner = ChefSpec::Runner.new(platform: "ubuntu", version: version)
runner = ChefSpec::Runner.new(:platform => "ubuntu", :version => version)
我需要能够在这两种语法之间切换,因为它们似乎在不同版本的chef/ruby中工作-我们将进行升级,但目前需要修复

我是regexp的新手,但一直在python中尝试这样做:

for line in fileinput.input(inplace=1, backup='.bak'):
  line = re.sub('(\w\w...): ',':"\1" =>', line.rstrip())
  print(line)

我不知道属性名是什么,也不知道它前面是什么,只知道一个单词后面有一个
(两个或更多字符)。我很高兴假设在
之后总会有一个空格,但我似乎很难“拾取”属性名,以便在以后替换和重新使用。

以下操作应该有效:

for line in fileinput.input(inplace=1, backup='.bak'):
  line = re.sub('(\w+): ', ':\g<1> => ', line.rstrip())
  print(line)
用于fileinput.input(inplace=1,backup='.bak')中的行:
line=re.sub(“(\w+):”,“:\g=>”,line.rstrip())
打印(行)

看,或者说

似乎很合适!谢谢你的快速回复。我仍然需要弄清楚为什么会出现这种语法,但这都是学习的一部分。干杯