ruby の正規表現の書き方がわからないので教えてください。

下記のperlのように、マッチした変数 $1 を、どうやって使うのでしょうか? 
s = '_a_あい_うえお__かきくけこ_b_さしすせそ__';
puts s.sub(/_._([\s\S]*?)__/,"start$1end");
のように書いてもうまくいきません。

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/pe_k08.htm
#// 教えてもらった凝ったやつ2 (最短マッチを使う手 Perl5 以降)
$s = '_a_あい_うえお__かきくけこ_b_さしすせそ__';
$s =~ s/_._([\s\S]*?)__/start$1end/g;

startあい_うえおendかきくけこstartさしすせそend

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2009/07/23 17:10:19
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:tama-jp No.1

回答回数36ベストアンサー獲得回数11

ポイント60pt

subではなく、gsubを使います。

s = '_a_あい_うえお__かきくけこ_b_さしすせそ__';
puts s.gsub(/_._([\s\S]*?)__/){"start" + $1 + "end"};

出力:

startあい_うえおendかきくけこstartさしすせそend


URL必須にされていますが、参考にしたものがないので、

とりあえずマニュアルを書いておきます。


gsubの参考URL:

http://www.ruby-lang.org/ja/man/html/String.html

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません