[#43271] rails がこけます — "Hideo Konami" <konami@...>

小波です。

15 messages 2007/03/18
[#43273] Re: rails がこけます — 山崎雄介 <y-yamasaki@...> 2007/03/19

山崎です。

[#43274] rubyスクリプト内で、unixコマンドを実行 — 上間 健 <mugenkai15@...> 2007/03/19

こんにちは、上間です。

[#43286] モジュールのinclude先の名前 — Sato Hiroshi <hirocy.f01@...>

hirocyです.

23 messages 2007/03/22
[#43290] system(wget url) について — Kyoko Sato <k.sato@...> 2007/03/22

お世話になっております。佐藤です。

[#43291] Re: system(wget url) について — Yukiharu Yabuki <yabuki@...> 2007/03/22

こんにちは

[#43293] Re: system(wget url) について — Kyoko Sato <k.sato@...> 2007/03/22

矢吹さん有難うございます。佐藤です。

[#43294] Re: system(wget url) について — Yukihiro Matsumoto <matz@...> 2007/03/22

まつもと ゆきひろです

[#43295] Re: system(wget url) について — Kyoko Sato <k.sato@...> 2007/03/22

まつもとゆきひろさん有難うございます。佐藤です。

[ruby-list:43346] Re: 置換リストを読み込んでのgsub

From: okkez <okkez000@...>
Date: 2007-03-31 11:32:57 UTC
List: ruby-list #43346
こんばんは。
okkezです。

07/03/31 に qzr00050@nifty.com<qzr00050@nifty.com> さんは書きました:
>
> 一応、後方参照については以下のtest.rbでクリアしたつもりですが、改行文字、
> タブ文字への置換ができていません。どこか間違ってないでしょうか。あるいは、
> できないのでしょうか。
>
> よろしくお願いいたします。
>

置換の仕様がよくわからなかったので、実行結果が期待どおりになるように書いてみました。
説明(とコード)から読み取れた私の解釈を書いておきます。

1. 置換リストは上から順番に実行される(一つ目の実行結果が二つ目への入力になる)
2. 置換リストにはRubyで * そのまま * 使える正規表現や文字列が記述されている

処理の内容を簡単に説明しておきます。

* ファイルの内容を一気に置換したいので、ファイルの内容は一気に読む
* 置換リストは一行一要素の配列にとりあえず格納
* 置換リストの右側にはRubyでそのまま使用できる文字列が記述されているので
  evalで評価すれば、Rubyの文字列になる。(\n,\tが期待どおりの文字列になる)
* 最初のブロック内のgsubは\1,\2がevalで変換されないようにする対策

gsub.rb
------------
txt = File.read('sample.txt') # 置換対象のファイル
arr = File.readlines('table.tsv') # 置換リスト
# 置換リスト変換
re = arr.map{|l|
  tmp = l.chomp.split("\t")
  [tmp.first, eval('"' + tmp.last.gsub(/(\\[0-9])/){ "\\" + $1 } + '"')]
}

re.each do |elem|
  txt.gsub!(/#{elem[0]}/mu, elem[1])
end

puts '----'
puts txt

実行結果は期待どおり、以下のようになります。
> 次のような結果を期待しているのですが…。
> a
> [b]
> c
> 1abcfoo2abcbar
>

それでは。

-- 
okkez
okkez000@gmail.com

In This Thread