instance method MatchData#bytebegin

bytebegin(n) -> Integer | nil[permalink][rdoc][edit]
bytebegin(name) -> Integer | nil

n 番目の部分文字列先頭のバイトオフセットを返します。

0 はマッチ全体を意味します。 n 番目の部分文字列がマッチしていなければ nilを返します。

引数に文字列またはシンボルを渡した場合は、対応する名前付きキャプチャの先頭のバイトオフセットを返します。

[PARAM] n:
部分文字列を指定する数値。
[PARAM] name:
名前付きキャプチャを指定する文字列またはシンボル。
[EXCEPTION] IndexError:
範囲外の n を指定した場合に発生します。
[EXCEPTION] IndexError:
正規表現中で定義されていない name を指定した場合に発生します。


/(c).*(いう).*(e.*)/ =~ 'abcあいうdef'
p $~              # => #<MatchData "cあいうdef" 1:"c" 2:"いう" 3:"ef">
p $~.bytebegin(0) # => 2
p $~.bytebegin(1) # => 2
p $~.bytebegin(2) # => 6
p $~.bytebegin(3) # => 13
p $~.bytebegin(4) # => index 4 out of matches (IndexError)
シンボルを指定する例

/(?<key>\S+):\s*(?<value>\S+)/ =~ "name: ruby"
$~                   # => #<MatchData "name: ruby" key:"name" value:"ruby">
$~.bytebegin(:key)   # => 0
$~.bytebegin(:value) # => 6
$~.bytebegin(:foo)   # => undefined group name reference: foo (IndexError)