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
私が正しいことを理解している場合、あなたはこれを行うことができます:
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
次のような正規表現を使用できます。
var = 123
new = 456
text.gsub(/\b#{var}\s?= .+/, "var = #{new}")
このツールは、それを理解するのに役立ちます 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)