我有一个文本文件,其中包含我经常用来清理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>' ]
]
答案 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('|')
。