0

我需要在 Ruby 的 Makefile 中替换一个变量

对于 ex(在 Makefile 中):

VAR = 123

我正在做的是:

puts text.gsub("VAR = 123", "VAR_NEW = 456")

问题是我不知道值,所以我想使用正则表达式来替换所有包含 VAR = 的行

我可以使用什么正则表达式?我可以使用不同的方法吗?

4

4 回答 4

3
 q.sub /VAR = .*/, 'VAR = 456' # replace one line
于 2012-11-16T15:24:35.850 回答
1

您可以使用这样的正则表达式:

var = 123
new = 456
text.gsub(/\b#{var}\s?= .+/, "var = #{new}")
于 2012-11-16T15:00:37.557 回答
1

如果我理解正确,您可以这样做:

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
于 2012-11-16T15:21:27.827 回答
1

这个工具将帮助你弄清楚 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)
于 2012-11-16T15:21:39.170 回答