myfile.html
次のような行を含むスクリプトを含むhtml ファイルがあります。
var json = '[{"name":"Hydrogen","number":"1","symbol":"H","weight":"1.00794"},{"name":"Helium","number":2,"symbol":"He","weight":4.002602},{"name":"Lithium","number":3,"symbol":"Li","weight":6.941},{"name":"Beryllium","number":4,"symbol":"Be","weight":9.012182},{"name":"Boron","number":5,"symbol":"B","weight":10.811},{"name":"Carbon","number":6,"symbol":"C","weight":12.0107}]';
variable に割り当てられる一重引用符内の文字列は、json
実際には異なります。この文字列を別のファイルの内容全体に置き換えたいと思いますmyjson.json
。
私はここでコードを試しました: Rubyのファイルを検索して置換し、 ここで: これを行うルビー正規表現で検索して置換し ます:
replace = File.read("myjson.json")
changefile = File.read("myfile.html")
changefile.sub( %r{var json = '[^<]+';}, replace )
しかし、それは機能していません。それが私が間違ってやっている正規表現なのか、それともそれ以上のものなのかはわかりません。
アップデート
以下の返信を読んだ後、私の最初の試みは次のとおりでした。
replace = File.read("myjson.json")
changefile = File.read("myfile.html")
changefile.sub!(%r{var json = '.+'}, replace)
puts changefile
これは正しく検索されましたが、すべてを削除して myjson.json に置き換えました.2つの一重引用符の間の内容var json = ''
を保持して置き換えたいだけです。var json =
それで、私は試しました:
replace = File.read("myjson.json")
changefile = File.read("myfile.html")
changefile.sub!(%r{var json = '.+'}, "var json = 'replace'")
puts changefile
しかし、それはちょうどそれをvar json = 'replace'
オリジナルを使用しvar json =
て場所を見つけたいのですが、削除したくありません。
だから私は愚かで間違っていると知っていることをしましたが、うまくいきました:
replace = File.read("myjson.json")
changefile = File.read("myfile.html")
changefile.sub!(%r{var json = '.+'}, "var json = 'thanksforthehelptinman'")
changefile.sub!(%r{thanksforthehelptinman}, replace)
puts changefile
助けてくれてありがとう!