【Ruby3.x】MatchData::length()メソッドの使い方
lengthメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
lengthメソッドは、正規表現のマッチング結果をカプセル化したMatchDataオブジェクトに格納されているマッチ要素の総数を返すメソッドです。MatchDataオブジェクトは、文字列に対して正規表現を適用した際に、マッチした文字列全体の情報や、正規表現内でカッコ(())で囲まれたキャプチャグループによって捕捉された部分の情報を保持します。このlengthメソッドを呼び出すと、MatchDataオブジェクトが内部に持つ、全体のマッチおよび各キャプチャグループのマッチの合計数を整数として取得できます。
具体的には、正規表現がマッチした場合、MatchDataオブジェクトにはインデックス0に全体のマッチが、インデックス1以降には各キャプチャグループのマッチが順に格納されます。lengthメソッドは、これらのすべての要素の総数を返します。これは、MatchDataオブジェクトをあたかも配列であるかのように扱った場合の要素の総数に相当します。例えば、"abc".match(/(a)(b)(c)/) のように正規表現が実行された場合、MatchDataオブジェクトは全体のマッチ("abc")と3つのキャプチャグループのマッチ("a", "b", "c")を保持し、lengthメソッドはそれらの合計である4を返します。プログラマーは、正規表現によるマッチ結果がいくつの部分から構成されているかを動的に把握したい場合に、このメソッドを活用できます。戻り値は常に非負の整数です。
構文(syntax)
1match_data = "hello world".match(/(h)(ello)\s(world)/) 2puts match_data.length
引数(parameters)
引数なし
引数はありません
戻り値(return)
Integer
マッチした文字列の数を整数で返します。