我有一个 html 文件myfile.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}]';
分配给变量的单引号内的字符串json
实际上会有所不同。我想用另一个文件的全部内容替换这个字符串myjson.json
。
我在这里尝试了代码: 在 Ruby 中的文件中查找和替换,在 这里: 搜索并替换为 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
这确实找到了正确的,但删除了所有var json = ''
并用 myjson.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
谢谢您的帮助!