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

【Ruby3.x】Regexp::eql?()メソッドの使い方

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

作成日: 更新日:

基本的な使い方

eql?メソッドは、Regexpクラスのインスタンスである正規表現オブジェクト同士が、完全に同じ内容であるかを厳密に比較するメソッドです。このメソッドは、比較対象の二つの正規表現オブジェクトが、全く同じパターン文字列を持ち、かつ、大文字小文字を区別しない「i」オプションや、複数行モードの「m」オプションなど、すべての正規表現オプションが完全に一致する場合にのみ、真(true)を返します。それ以外の、パターンやオプションが少しでも異なる正規表現オブジェクトと比較した場合は、偽(false)を返します。

一般的な==演算子が正規表現の「マッチング能力」の等価性を比較的緩やかに評価するのに対し、eql?メソッドは正規表現オブジェクトの「構成要素そのもの」が厳密に一致するかを判断します。この厳密な比較は、正規表現オブジェクトをハッシュ(連想配列)のキーとして使用する際などに特に重要です。eql?がtrueを返すオブジェクトは、同時にhashメソッドも同じハッシュ値を返すことが期待されるため、ハッシュの整合性を保つ上で不可欠な役割を果たします。これにより、予期せぬキーの衝突を防ぎ、信頼性の高いプログラムを構築することができます。

構文(syntax)

1regex1 = /example/i
2regex2 = /example/i
3regex3 = /example/
4
5regex1.eql?(regex2) # => true (パターンとオプションが完全に一致)
6regex1.eql?(regex3) # => false (オプションが異なるため)

引数(parameters)

req

  • other: 比較対象のオブジェクト

戻り値(return)

Boolean

2つの正規表現オブジェクトが、完全に同じパターンとオプションで構成されている場合に真 (true) を返します。それ以外の場合は偽 (false) を返します。

関連コンテンツ