Ruby gsub检查或(||)模式

时间:2017-05-13 13:38:38

标签: ruby

Ruby Experts,

我尝试检查并删除文件夹下的多个文件中的字符串,下面是我的代码段,

........
work_files = Dir.glob("E:\nano\*_access.txt")

val=File.open('E\new_dir\access_list.txt').read
val.each_line do |line|
    line.chomp!
    work_files.each do |file_name|
      text = File.read(file_name)
      new_content = text.gsub(( /#{Regexp.escape(line)}\,\s/, '')  || ( /#{Regexp.escape(line)}\n/, '' )) 
..........
........ 

来自其中一个文件,如下所示我检查字符串 ncr \ atxe5t (也可能多次出现)。它将从模式的最后一行中删除(/#{Regexp.escape(line)}\,\s/,&&39;')但它不会从模式的最后一行中移除 - /#{Regexp.escape(line)}\n/,&& 39;' 。

我得到如下错误

  

... ^ test.rb:14:语法错误,   意外的',',期待')' ... | (/#{Regexp.escape(line)}\n/,&& 39;'))

EG。 E:\纳米\ ids_access.txt

# Digital created on July 2016
# Digital Owner: John Cena (jxcgo)
# Digital access: create delete access

[pool]
@rem = ncr\abc_efg_dev, ncr\abc_efg_test, ncr\jx8go5, ncr\atxe5t
@digital_owner = ncr\atxe5t, ncr\yui30n, ncr\bhyrl4

我不确定gsub方法中是否允许使用或(||)条件模式,但我只想使用gsub方法。是否有可能在红宝石。提前致谢。希望我已经解释清楚。

1 个答案:

答案 0 :(得分:1)

不,||在方法args中不可用。我认为这就是你想要做的: gsub(/#{Regexp.escape(line)}\,(\s|\Z)/, '')