Чтение файла с помощью Ruby - PullRequest
1 голос
/ 22 июня 2009

У меня есть текстовый файл, который содержит список регулярных выражений, которые я регулярно использую для очистки HTML-файлов в соответствии с:

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 ]

2 голосов
/ 22 июня 2009

Попробуйте следующее:

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
0 голосов
/ 22 июня 2009

Предполагая, что часть #{b} никогда не будет содержать |, я получаю следующее:

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

В противном случае вам, вероятно, придется заменить s.rindex('|') на что-то более сложное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...