Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】MatchData::byteoffset()メソッドの使い方

byteoffsetメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

byteoffsetメソッドは、正規表現のマッチ結果を表すMatchDataオブジェクトに対して、特定のマッチ部分の開始位置と終了位置をバイト単位で取得するメソッドです。

このメソッドは、引数に整数nを取ります。nは、どのマッチ部分のオフセットを取得するかを指定します。nが0の場合は正規表現にマッチした文字列全体の範囲を、1以上の場合は正規表現中のキャプチャグループ(括弧で囲まれた部分)にマッチした範囲を示します。

戻り値は、[開始バイトオフセット, 終了バイトオフセット]という形式の2要素の配列です。開始バイトオフセットは、マッチ部分の先頭が文字列の先頭から何バイト目にあるかを示し、終了バイトオフセットは、マッチ部分の直後の位置が文字列の先頭から何バイト目にあるかを示します。バイトオフセットとは、文字列の先頭からのバイト数を指します。

このメソッドを使用することで、マルチバイト文字を含む文字列であっても、文字列の物理的なバイト位置を正確に把握し、特定のバイト範囲を操作する際に非常に役立ちます。例えば、バイナリデータ処理や、特定の文字エンコーディングを考慮した文字列操作を行う場合などに利用されます。

構文(syntax)

1"文字列".match(/パターン/).byteoffset(グループ番号)

引数(parameters)

idx, nth = 0

  • idx: マッチした部分のうち、何番目の部分のバイトオフセットを取得するかを指定する整数。0から始まります。
  • nth = 0: オプション。バイトオフセットを取得するマッチグループを指定する整数。デフォルトは0で、全体のマッチ全体を指します。

戻り値(return)

Array

マッチした文字列の開始位置と終了位置をバイト単位の配列として返します。

関連コンテンツ