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

【Ruby3.x】Symbol::=~()メソッドの使い方

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

作成日: 更新日:

基本的な使い方

=~メソッドはSymbolクラスに属し、正規表現によるパターンマッチングを試みるメソッドです。

Symbolオブジェクトは、Rubyにおいて識別子などの名前を表すために使用される特殊なオブジェクトであり、文字列(Stringオブジェクト)とは異なる性質を持ちます。この=~演算子は、通常、文字列に対して正規表現マッチングを行う際に使われますが、Symbolオブジェクトに対して直接適用しても、文字列のようなマッチングは行われません。

Ruby 3.0以降のバージョンでは、Symbolオブジェクトに対して=~メソッドを呼び出すと、常にnilが返されるようになりました。これは、正規表現とのマッチングが常に失敗することを示しており、シンボルが正規表現パターンと一致する位置を返すことはありません。

もしシンボルの内容を文字列として扱い、正規表現でパターンマッチングを行いたい場合は、まずto_sメソッドなどを使用してSymbolオブジェクトを明示的にStringオブジェクトに変換する必要があります。その後、変換されたStringオブジェクトに対して=~演算子を適用することで、期待される正規表現マッチングを実行できます。

このSymbol#=~メソッドは非推奨となっており、将来のRubyのバージョンで完全に削除される可能性もあります。そのため、Symbolオブジェクトに対して正規表現マッチングを行う場合は、必ず一度文字列に変換してから行うことを強く推奨します。

構文(syntax)

1:ruby =~ /ub/

引数(parameters)

regexp

  • regexp: 正規表現オブジェクト

戻り値(return)

Integer または nil

Stringクラスのto_symメソッドで生成されたシンボルと、Stringオブジェクトの間に正規表現マッチングを行います。パターンにマッチした場合、マッチした部分文字列の開始位置を示す整数を返します。パターンにマッチしなかった場合は、nilを返します。

関連コンテンツ