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

<强> LIST.TXT

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

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

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

解决方案

尝试以下方法:

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top