我需要在 Ruby 的 Makefile 中替换一个变量
对于 ex(在 Makefile 中):
VAR = 123
我正在做的是:
puts text.gsub("VAR = 123", "VAR_NEW = 456")
问题是我不知道值,所以我想使用正则表达式来替换所有包含 VAR = 的行
我可以使用什么正则表达式?我可以使用不同的方法吗?
我需要在 Ruby 的 Makefile 中替换一个变量
对于 ex(在 Makefile 中):
VAR = 123
我正在做的是:
puts text.gsub("VAR = 123", "VAR_NEW = 456")
问题是我不知道值,所以我想使用正则表达式来替换所有包含 VAR = 的行
我可以使用什么正则表达式?我可以使用不同的方法吗?
q.sub /VAR = .*/, 'VAR = 456' # replace one line
您可以使用这样的正则表达式:
var = 123
new = 456
text.gsub(/\b#{var}\s?= .+/, "var = #{new}")
如果我理解正确,您可以这样做:
irb(main):001:0> text = <<EOF
irb(main):002:0" VAR1 = 111
irb(main):003:0" VAR2 = 222
irb(main):004:0" EOF
=> "VAR1 = 111\nVAR2 = 222\n"
irb(main):005:0> puts text
VAR1 = 111
VAR2 = 222
=> nil
irb(main):007:0> text.gsub!(/^VAR2\s\=\s\d+/, "NEW_VAR = 555")
=> "VAR1 = 111\nNEW_VAR = 555\n"
irb(main):008:0> puts text
VAR1 = 111
NEW_VAR = 555
=> nil
这个工具将帮助你弄清楚 http://rubular.com/
或许这
test.gsub(/^(VAR=\s*(['"]?))\d+\2/, $1 + "456" + $2)
也就是说,如果您只想更改变量的值
编辑:
test.gsub(/^(VAR=\s*(['"]?))\d+\2\s*$/, $1 + "456" + $2)
编辑 2
test.gsub(/^(VAR=\s*(['"]?)).*\2\s*$/, $1 + "456" + $2)