[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