その他
    ホーム 技術発信 DoRuby PostgreSQLで正規表現にマッチした文字の抽出

    PostgreSQLで正規表現にマッチした文字の抽出

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    PostgreSQLでも正規表現を使える、なんてことできるんですよねっ
    ってわけで、今回はそれを踏まえて正規表現にマッチした文字列を抽出しようと思います。
    なんてこたぁない。

    SELECT
      SUBSTRING(mobile_email FROM '(docomo|softbank|ezweb)') AS carrier2
    , carrier
    FROM
       users
    ;
    

    これで、あるテーブルを用意し、実行結果をみると、

     carrier2 | carrier  
    ----------+----------
     docomo   | DoCoMo
     docomo   | DoCoMo
     ezweb    | au
     softbank | SoftBank
     softbank | SoftBank
     ezweb    | au
     docomo   | DoCoMo
     docomo   | DoCoMo
    

    のように並びました。
    上記のSQLでは、携帯のメールアドレスからdocomo、softbank、ezwebのいずれかにマッチした かどうかを見て、()内の正規表現にマッチしている文字列を記憶して、carrier2として取得しています。

    これ、実は、登録されているキャリアとメールアドレスのドメインの整合性がとれているかどうかをチェックしようと思って作ってみました。

    上記の内容がわかりにくいでしょうか?
    Rubyで書いたら

    /(docomo|softbank|ezweb)/ =~ mobile_email
    p $1
    

    といったところでしょうか。
    これならピンときました?