2009-06-21 7 views
1

J'ai un fichier texte qui contient une liste de choses regexp que je l'utilise régulièrement pour nettoyer les fichiers html suivant:Lecture d'un fichier avec Ruby

list.txt

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

si chaque ligne se composait de la forme "# {a} | # {b}", quelle serait la façon la plus simple à la fois lire et convertir ce fichier dans le tableau:

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

Umm, je viens de vous écrit un code qui travaillerait pour | ainsi que. Essayez-le. – Elitecoder

+0

A écrit un autre code qui fonctionnerait pour "!" J'espère que ça aide. – Elitecoder

Répondre

2

les opérations suivantes:

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

Ou si votre séparation ne se produit pas dans les expressions rationnelles et remplacements:

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

En supposant que la partie #{b} ne contiendra jamais une |, je reçois les éléments suivants:

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

Sinon, vous devrez probablement remplacer s.rindex('|') quelque chose de plus compliqué.

Questions connexes