【SQL超入門講座】19.正規表現|複雑なパターンマッチングを条件に抽出する方法

オススメ

前のレッスンで解説した、LIKE演算子によるパターンマッチングを覚えているでしょうか。
LIKE演算子によるパターンマッチングでは、ワイルドカードの_と%を使用してパターンを表記しました。

今回のレッスンでは、より複雑なパターンを表記できるようになるため、正規表現の使い方を解説します。
正規表現の理解は、SQLだけでなくプログラミングを行う上でとても重要です。
様々な記号を使用するので、最初からすべてを覚えるのは大変ですが、少しずつ使いこなせるようになりましょう。
それではレッスンスタートです。

▼書き起こしブログ
https://kino-code.com/

▼関連動画
【SQL超入門講座】01.コース紹介 ~ SQLとは? ~ 環境構築|初心者向け

【SQL超入門講座】01.コース紹介 ~ SQLとは? ~ 環境構築|初心者向け

【SQL超入門講座】02.データベースのテーブルとは?

【SQL超入門講座】02.データベースのテーブルとは?

【SQL超入門講座】03.SELECT文|SQLの基本中の基本

【SQL超入門講座】03.SELECT文|データベースからデータ抽出する方法

【SQL超入門講座】04.WHERE|特定の条件でデータを抽出する方法

【SQL超入門講座】04.WHERE|特定の条件でデータを抽出する方法

【SQL超入門講座】05.ORDER BY|データの並び替え

【SQL超入門講座】05.ORDER BY|データの並び替える方法

【SQL超入門講座】06.GROUP BY|グルーピング、グループ化

【SQL超入門講座】06.GROUP BY|指定したカラムの値を基準にデータを集計する方法

【SQL超入門講座】07.HAVING|グループ化したデータの中からデータ抽出

【SQL超入門講座】07.HAVING|グループ化したデータの中からデータ抽出

【SQL超入門講座】08.JOIN|テーブルの結合(INNER JOIN/LEFT JOIN)

【SQL超入門講座】08.INNER JOIN/LEFT JOIN|テーブル同士を結合する方法①

【SQL超入門講座】09.PostgreSQLの環境構築|MacとWindowsで解説!

【SQL超入門講座】09.PostgreSQLの環境構築|MacとWindowsで解説!

【SQL超入門講座】10.PythonとPostgreSQLの接続

【SQL超入門講座】10.PythonからPostgreSQLに接続する方法

【SQL超入門講座】11.データベースのバックアップと復元

【SQL超入門講座】11.データベースのバックアップと復元する方法

【SQL超入門講座】12.テーブルの結合(RIGHT JOIN/OUTER JOIN)

【SQL超入門講座】12.RIGHT JOIN/OUTER JOIN|テーブルの結合する方法②

【SQL超入門講座】13.AND, OR|複数条件で抽出する方法

【SQL超入門講座】13.AND, OR|複数条件で抽出する方法

【SQL超入門講座】14.LIKE|部分一致や前方一致、後方一致するレコードを抽出する方法

【SQL超入門講座】14.LIKE|部分一致や前方一致、後方一致するレコードを抽出する方法

【SQL超入門講座】15.BETWEEN|区間を指定して抽出する方法

【SQL超入門講座】15.BETWEEN|区間を指定して抽出する方法

【SQL超入門講座】16.LENGTH関数|文字数を条件にしてデータを抽出する方法

【SQL超入門講座】16.LENGTH関数|文字数を条件にしてデータを抽出する方法

【SQL超入門講座】17.DISTINCT|重複した値を排除して抽出する方法

【SQL超入門講座】17.DISTINCT|重複した値を排除して抽出する方法

【SQL超入門講座】18.SUBSTRING|文字列の一部を切り出す方法

【SQL超入門講座】18.SUBSTRING|文字列の一部を切り出す方法

▼自己紹介
ブログに自己紹介を書いております。

▼SNS
Twitter : https://twitter.com/kino_code/likes
Facebook : https://www.facebook.com/キノコード -105693727500005/
Website : https://kino-code.com/

▼書き起こし
最初に基本的な正規表現について、順に解説していきます。
それでは指定した文字のいずれかに一致することを表記する方法を見ていきましょう。
[…](角括弧の中に文字列)と書くと、[]の中のいずれかの文字に一致することを表します。
例えば[abc](角括弧の中にabc)と書けば、a、b、cのいずれかがマッチすることになります。
一方で[^…](角括弧の中の文字列の前に、キャレットをつけると)と^を文字の前につけると、[]の中の文字以外という意味になります。
そのため[^abc](角括弧の中にキャレットabc)と書けばa、b、c以外の1文字がマッチすることになります。

|(パイプライン)は文字列が|(パイプライン)の左右のいずれかに一致することを表します。
例えばa|bcと書けば、a、bcのどちらかがマッチします。
また()(丸括弧)を用いることで、文字列をグループとして扱うことができます。
今学んだ|を用いてa(b|bc)(a丸括弧、更にその中にbパイプラインbc)と書けば、()の中はbかbcのどちらかに一致することを表しているので、abとabcがマッチすることになります。

次に文字列の先頭と末尾を表す^と$について見ていきましょう。
^は直後の文字が文字列の先頭であることを表します。
つまり^abと書けば、ab、abcなどの文字列がマッチします。
一方$は直前の文字が文字列の末尾であることを表します。
そのためbc$と書けば、bc、abcなどの文字列がマッチすることになります。

ここからは文字の繰り返しを表す正規表現について確認していきます。
*は直前の文字を0回以上繰り返すことを表し、+は1回以上繰り返すことを表します。
正規表現では、.は任意の1文字を表します。
そのため.*と書けば任意の0文字以上の文字列を、.+と書けば任意の1文字以上の文字列を表記することができます。

?は直前の文字が0回か1回出現することを表します。
*、+との違いは、直前の文字の複数回の繰り返しではなく、直前の文字の出現回数が0回か1回と決まっていることです。
そのためa?と書けば、abc、bcなどがマッチし、aabcなどaを2回以上繰り返している文字列はマッチしないことになります。
(続く)

#SQL #正規表現 #抽出 #postgrSQL

コメント

タイトルとURLをコピーしました