成瀬です。

2010年5月6日14:37 KISHIMOTO, Makoto <ksmakoto / dd.iij4u.or.jp>:
> ※ String#match の rdoc がオプショナル引数に対応してないようです

こちらは r27639 で反映しました。
パッチありがとうございました。

> ruby 1.9 の Regexp#match および String#match のオプショナル引数で、
> 開始位置を指定した場合の \A のマッチについてなのですが、現在の実装では、
> \A はあくまでも文字列の先頭にのみマッチし、開始位置にはマッチしません。
>
> $ irb19
> irb(main):001:0> "foo".match /\A/, 1
> => nil
>
> 文字列の中に現れるパターンを、開始位置をずらしながらなめるような処理を
> 書く時に、開始位置でのみマッチさせたい、というわけで、マッチしてくれた
> ほうがうれしいように思うのですが、現在の実装が意図したもので、仕様という
> ことなんでしょうか?

こちらは現在の仕様で正しいと思います。
開始位置をずらしながらなめるような処理において、1つの正規表現で文字列先頭用と
途中用のパターンを含ませた場合、例えば /\A<\?xml[^>]*\?><foo>|<bar>/ などでは
1つ目のパターンでは本当に文字列先頭の時だけにマッチさせたいわけですから、
途中でマッチしては困ります。
そのようなユースケースが想定される以上、その場合のための手段は提供されるべきでしょう。

また、仰るような開始位置の先頭に対して作用する要素にはすでに \G が存在します。

よって、\A の意味変更は代替手段がなく、仰る用途にはすでにそれ用の \G があるので、
現状のままで正しいと思います。

-- 
NARUSE, Yui
naruse / airemix.jp