【Ruby3.x】MatchData::byteend()メソッドの使い方
byteendメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
byteendメソッドは、正規表現によるマッチ結果を保持するMatchDataオブジェクトにおいて、マッチした部分文字列の終端位置をバイト単位で取得するメソッドです。このメソッドは、マッチした部分文字列が、元の対象文字列の先頭から数えて何バイト目で終了するかを整数で返します。
引数を指定しない場合、正規表現全体がマッチした部分(グループ0)の終端バイトオフセットを返します。例えば、"Hello Ruby".match(/Ruby/).byteend のように使用すると、"Hello Ruby"という文字列の中で"Ruby"がマッチした範囲の終端位置をバイト数で得ることができます。
引数に整数を渡すことで、特定のキャプチャグループ(正規表現の丸括弧で囲まれた部分)がマッチした部分の終端位置を取得できます。byteend(n)と記述すると、n番目のキャプチャグループの終端バイトオフセットを返します。キャプチャグループは1から始まります。もし対応するグループが存在しない場合や、そのグループがマッチしなかった場合はnilを返します。このメソッドは、正規表現によって抽出された部分文字列の物理的な位置を、バイト単位で正確に特定したい場合に非常に役立ちます。特に、マルチバイト文字を含む文字列を扱う際に、文字数ではなくバイト数で位置を把握することが重要となる場面で活用されます。
構文(syntax)
1md = "Ruby Programming".match(/(\w+)/) 2md.byteend(1)
引数(parameters)
nth = 0
- nth = 0: マッチした部分文字列の終端インデックスを指定する整数。デフォルトは0で、最初に見つかったマッチ全体を指します。
戻り値(return)
Integer
マッチした文字列の終了位置(バイト単位)を整数で返します。