Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

Why?

irb で実行。

irb(main):009:0> if '| hogehoge' =~ /^| (.*)/ then print "ok\n" end
ok
nil
irb(main):010:0> print $1
nilnil
irb(main):011:0> if '| hogehoge' =~ /^\| (.*)/ then print "ok\n" end
ok
nil
irb(main):012:0> print $1
hogehogenil 

最初のマッチは一体何にマッチしてるの?

「行頭」にマッチしているわけではなさそう。その場合は "nilnil" でなくて "nil" と表示される。

irb(main):013:0> "hoge" =~ /(^)/
0
irb(main):014:0> print $1
nil