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

From: Takahiro Yamaguchi <yamataka@...08.itscom.net>
Date: 2018-06-02 15:21:10 UTC
List: ruby-list #50670
=E5=B1=B1=E5=8F=A3=E3=81=A8=E7=94=B3=E3=81=97=E3=81=BE=E3=81=99=E3=80=82

$ 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]

=E3=81=AE=E7=92=B0=E5=A2=83=E3=81=A7=E3=80=81

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

=E3=82=92=E5=AE=9F=E8=A1=8C=E3=80=82

$ ruby regex.rb
v 5    # v 5 =E3=81=A8=E5=85=A5=E5=8A=9B
match
"5"
":direct "

=E3=81=A8=E3=81=AA=E3=82=8A=E3=80=81

v 5 =E3=81=A8=E5=85=A5=E5=8A=9B=E3=81=97=E3=81=9F=E5=A0=B4=E5=90=88=E3=80=81=


if =E6=96=87=E4=B8=AD  $1 =
=E3=81=A7=E3=80=81=E3=82=AD=E3=83=A3=E3=83=97=E3=83=81=E3=83=A3=E3=81=97=E3=
=81=9F=E5=86=85=E5=AE=B9=E3=82=92=E5=8F=82=E7=85=A7=E3=81=A7=E3=81=8D=E3=81=
=A6=E3=81=84=E3=82=8B=E3=81=AE=E3=81=A7=E3=81=99=E3=81=8C=E3=80=81
p c[:cmd] =E3=81=AE=E3=80=81c[:cmd]  =E3=81=AE=E3=80=81$1 =E9=83=A8=E5=88=86=
=E3=80=81
=
=E3=81=A7=E3=82=AD=E3=83=A3=E3=83=97=E3=83=81=E3=83=A3=E3=81=97=E3=81=9F=E5=
=86=85=E5=AE=B9=E3=82=92=E5=BE=8C=E6=96=B9=E5=8F=82=E7=85=A7=E3=81=A7=E3=81=
=8D=E3=81=9A=E3=81=AB=E3=80=81=E6=82=A9=E3=82=93=E3=81=A7=E3=81=84=E3=81=BE=
=E3=81=99=E3=80=82
=
=E3=81=A9=E3=81=AE=E3=82=88=E3=81=86=E3=81=AB=E3=81=99=E3=82=8C=E3=81=B0=E3=
=82=88=E3=81=84=E3=81=8B=E3=80=81=E3=81=94=E6=95=99=E7=A4=BA=E3=81=84=E3=81=
=9F=E3=81=A0=E3=81=91=E3=81=AA=E3=81=84=E3=81=A7=E3=81=97=E3=82=87=E3=81=86=
=E3=81=8B=EF=BC=9F

In This Thread

Prev Next