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