用Ruby读取文件

时间:2009-06-21 20:54:47

标签: ruby file-io xss

我有一个文本文件,其中包含我经常用来清理html文件的regexp列表:

LIST.TXT

<p[^>]*>|<p>
<\/?(font|span)[^>]*>|
<\/u>\s*<u>|
<\/u>\s*<i>\s*<u>|<i>

如果每一行都包含“#{a} |#{b}”形式,那么读取此文件并将其转换为数组的最简单方法是什么:

[
  [ /<p[^>]*>/, '<p>' ],
  [ /<\/?(font|span)[^>]*>/, '' ],
  [ /<\/u>\s*<u>/, '' ],
  [ /<\/u>\s*<i>\s*<u>/, '<i>' ]
]

2 个答案:

答案 0 :(得分:2)

尝试以下方法:

result = File.foreach("list.txt").collect do |line|
  *search, replace = line.strip.split("|", -1)
  [Regexp.new(search.join("|")), replace]
end

或者,如果您的分隔符未出现在正则表达式和替换中:

result = File.foreach("list.txt").collect do |line|
  search, replace = line.strip.split("!", -1)
  [Regexp.new(search), replace]
end

答案 1 :(得分:0)

假设#{b}部分永远不会包含|,我会得到以下内容:

File.open(filename,"r").collect
  { |s|
    x = s.rindex('|');
    [ Regexp.new(s[0..x]), s[x+1..-1].chop ]
  }

否则,你可能不得不用更复杂的东西替换s.rindex('|')