【Ruby3.x】Regexp::==()メソッドの使い方
==メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
==メソッドは、二つの正規表現オブジェクトが等しいかどうかを比較するメソッドです。このメソッドは、比較対象の正規表現オブジェクトが、全く同じパターン文字列と、同じ正規表現オプション(例えば、大文字小文字を区別しないiオプション、複数行モードを表すmオプションなど)を持っている場合にtrueを返します。
たとえ異なる構文や異なる方法で生成された正規表現オブジェクトであっても、そのパターンとオプションが完全に一致していれば、==メソッドによる比較では等しいと判断されます。例えば、Regexp.new('abc') で作成された正規表現と、リテラル形式の/abc/ は、どちらも「abc」というパターンで、かつオプションがデフォルトで同じであるため、これらを==で比較するとtrueになります。
しかし、パターン文字列がわずかでも異なる場合や、オプションフラグの一つでも異なる場合(例: /pattern/i と /pattern/ は、大文字小文字を区別しないかどうかのオプションが異なるため、falseを返します)、これらの正規表現オブジェクトは等しくないと判断され、falseが返されます。
正規表現オブジェクトではない他の種類のオブジェクト、例えば文字列や数値などと比較した場合は、たとえ見た目が似ていても、常にfalseとなります。この==メソッドは、プログラムの実行中に正規表現の定義が期待通りであるかを確認したり、複数の正規表現が意図した通りに同じ意味を持つかどうかを厳密に検証したりする際に非常に有用です。正規表現の厳密な等価性を判断するための基本的な比較演算子として利用されます。
構文(syntax)
1/pattern/ == /pattern/
引数(parameters)
other
- other: 比較対象のオブジェクト
戻り値(return)
Boolean
二つの正規表現オブジェクトが、パターンとオプションを含め完全に等しい場合に true を返します。それ以外の場合は false を返します。