[ruby-list:50670] [質問] キャプチャ付き正規表現の後方参照

From: Takahiro Yamaguchi <yamataka@...08.itscom.net>
Date: 2018-06-02 15:21:10 UTC
List: ruby-list #50670
山口と申します。

$ uname -a
Darwin yamaguchi-no-MacBook-Air.local 17.5.0 Darwin Kernel Version 17.5.0: Fri Apr 13 19:32:32 PDT 2018; root:xnu-4570.51.2~1/RELEASE_X86_64 x86_64
$ ruby --version
ruby 2.3.3p222 (2016-11-21 revision 56859) [universal.x86_64-darwin17]

の環境で、

$ cat regex.rb
tbl_cmd = [ 
  { regexp:       '^ *v +(\d+) *$',
    cmd:          ":direct #{$1}"},
]
cmd = STDIN.gets # $ v 5
tbl_cmd.each do |c|
  if /#{c[:regexp]}/ =~ cmd
    puts "match"    # => match
    p $1                 # => "5"
    p c[:cmd]         # => ":direct " 
  end
end

を実行。

$ ruby regex.rb
v 5    # v 5 と入力
match
"5"
":direct "

となり、

v 5 と入力した場合、

if 文中  $1 で、キャプチャした内容を参照できているのですが、
p c[:cmd] の、c[:cmd]  の、$1 部分、
でキャプチャした内容を後方参照できずに、悩んでいます。
どのようにすればよいか、ご教示いただけないでしょうか?

In This Thread

Prev Next