使用Ruby进行文件操作

时间:2012-04-02 04:44:07

标签: ruby regex parsing

我正在使用Ruby为我的团队编写命令行开发实用程序。

我正在尝试检查文件系统上的HTML文档,并在<script>

之前添加新的</head>标记

类似的东西:

<html>
  <head>
    <script src="...foo.js"></script>
    <script src="...bar.js"></script>
    <!-- I WANT TO INSERT NEW TEXT HERE -->
  </head>
  <body>
  </body>
</html>

我在考虑从IO.readlines(file_name)开始,将每一行与正则表达式进行比较,然后在</head>之前插入新标记。然后,将整个数组合并回该文件的新版本。

这听起来过于复杂。谁有更好的方法?

对于奖励积分,拥有合适的缩进水平会很棒。

2 个答案:

答案 0 :(得分:5)

HTML和正则表达式(通常)并不是一个好主意。

如果您想以干净的方式使用Ruby解析和修改HTML,我推荐使用Nokogiri。

http://nokogiri.org/

http://nokogiri.org/tutorials

答案 1 :(得分:1)

在你的特殊情况下,这不是一个坏主意。如果文件中有特殊行,则可以轻松找到它,从行的开头提取必要数量的缩进,并用另一个内容替换整行。但是不要在记忆中这样做。您可以在读取源文件时将其写入临时文件,而不需要占用RAM。

如果HTML评论只是一个示例,并且该行不存在,您仍然可以替换&lt; / head&gt;的第一次出现。与&lt; script&gt; ...&lt; / script&gt;&lt; / head&gt;使用正则表达式,不需要解析HTML。 (但这只适用于你的特殊情况。)坦率地说,你也不需要Ruby,因为sed命令非常适合这项工作。

或者,如果您进行其他检查,例如脚本已经存在,那么 使用任何HTML解析器lib / gem。我建议你使用hpricot,如果你喜欢jQuery的概念,因为hpricot有一个非常类似的方法。

HTH