0

我需要在 ruby​​ 中的正则表达式中添加一个字符串,这就是我想要做的(我在我的目录中获取所有文件,打开它们,查找它们是否有模式,然后通过添加到已经存在的内容来修改该模式,为此我需要实际的字符串)

Dir["*"].each do |tFile|
  file = File.open(tFile, "rb")
  contents = file.read
  imageLine=/<img class="myclass"(.*)\/>/
  if(contents=~imageLine)
      puts contents.sub!(imageLine, "some string"+imageLine+"some other string")
  end
end
4

2 回答 2

1

您可以使用subgsub与捕获组一起使用:

"foo".gsub(/(o)/, '\1x')
=> "foxox"

有关更多信息,请参阅文档

于 2012-08-02T14:22:22.037 回答
0

您正在使用sub!哪个是就地修改器版本。虽然这有其用途,但该方法的结果不是字符串,而是指示是否已完成任何操作。

sub方法更适合这种情况。如果您有多个必须替换的匹配项,请使用gsub.

在进行替换时,您可以使用占位符\1来处理捕获的部分,在正则表达式中使用括号进行捕获,或者使用块版本进行更多任意操作。

IMAGE_REGEXP = /<img class="myclass"(.*)\/>/

Dir["*"].each do |tFile|
  File.open(tFile, "rb") do |in|
    puts in.read.gsub(IMAGE_REGEXP) { |s| "some string#{s}some other string" }
  end
end
于 2012-08-02T14:53:32.547 回答