Takahiro Yamaguchi
2018-06-02 15:21:10 UTC
山口と申します。
$ 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 部分、
でキャプチャした内容を後方参照できずに、悩んでいます。
どのようにすればよいか、ご教示いただけないでしょうか?
$ 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 部分、
でキャプチャした内容を後方参照できずに、悩んでいます。
どのようにすればよいか、ご教示いただけないでしょうか?