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方法。是否有可能在红宝石。提前致谢。希望我已经解释清楚。
答案 0 :(得分:1)
不,||
在方法args中不可用。我认为这就是你想要做的:
gsub(/#{Regexp.escape(line)}\,(\s|\Z)/, '')
。