0

ルビーの正規表現に文字列を追加する必要があります。これが私がやろうとしていることです(ディレクトリ内のすべてのファイルを取得して開き、パターンがあるかどうかを確認し、既存のものに追加してそのパターンを変更します、これを行うには、実際の文字列が必要です)

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

subまたはgsubをキャプチャ グループと共に使用できます。

"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 に答える