MySQLで正規表現(REGEXP)を使って特定の文字列を抽出する方法
MySQLでは、REGEXP演算子を使うことで、正規表現にマッチするレコードだけを簡単に抽出できます。本記事では、実際にテーブルを作成し、データを挿入したうえで、正規表現による文字列検索の具体的な手順を解説します。
1. サンプルテーブルの作成
まず、CREATE TABLE文を使用してテーブルを作成します。
mysql> create table DemoTable649 (Value text); Query OK, 0 rows affected (0.68 sec)
2. テーブルへのデータ挿入
次に、INSERTコマンドを使ってサンプルデータを登録します。ここでは桁数の異なる数値文字列を複数挿入しています。
mysql> insert into DemoTable649 values('1903');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable649 values('9321010');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable649 values('983032023393');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable649 values('1234567892');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable649 values('989898989');
Query OK, 1 row affected (0.20 sec)
3. 登録データの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable649;
実行結果は以下のとおりです。
+--------------+ | Value | +--------------+ | 1903 | | 9321010 | | 983032023393 | | 1234567892 | | 989898989 | +--------------+ 5 rows in set (0.00 sec)
4. 正規表現(REGEXP)で特定の文字列を抽出する
ここからが本題です。以下のクエリでは、REGEXP演算子とパターン '[0-9]{11}' を組み合わせて、「数字が11桁連続している文字列」を持つレコードのみを取得しています。
mysql> select *from DemoTable649 where Value REGEXP '[0-9]{11}';
実行結果は以下のとおりです。
+--------------+ | Value | +--------------+ | 983032023393 | +--------------+ 1 row in set (0.00 sec)
解説:なぜこのレコードだけが抽出されたのか
正規表現 [0-9]{11} の意味は次のとおりです。
- [0-9] … 0から9までのいずれかの数字1文字にマッチ
- {11} … 直前のパターンがちょうど11回繰り返されることを意味
今回のサンプルデータの中で「11桁以上の連続した数字」を含むのは 983032023393(12桁)のみのため、このレコードだけが結果として返されました。なお、12桁の文字列にも11桁の連続部分が含まれるためマッチします。もし「ちょうど11桁の文字列」だけを厳密に抽出したい場合は、^[0-9]{11}$ のようにアンカー(^ と $)を追加するとよいでしょう。
まとめ
MySQLのREGEXP演算子を使えば、LIKE句では実現しづらい柔軟なパターンマッチングが可能になります。桁数指定や特定の文字種の組み合わせなど、正規表現を活用することで、より高度な文字列検索をSQLだけで実現できます。
-
Ruby正規表現で条件分岐を使う方法 ― Onigmoエンジンの条件式を徹底解説
2013年にリリースされたRuby 2.0の数多くの新機能の中で、私が最も注目していなかったのは、新しい正規表現エンジン「Onigmo」でした。正規表現はどの言語でも同じもの――Rubyがどう実装しているかを気にする必要はあるのでしょうか?ところが実際には、Onigmoには便利な仕掛けがいくつも隠されており、そのひとつが正規表現の中で条件分岐を使えるという機能です。この記事では、正規表現の条件式について詳しく掘り下げながら、Ruby実装ならではのクラスや、その制限を回避するためのテクニックまで解説していきます。それでは始めましょう!グループとキャプチャの基本正規表現の条件式を理解するには、まず
-
Javaの正規表現で文字列から数値を抽出する方法
Javaの正規表現(Regular Expression)を使えば、文字列の中から数値だけを簡単に取り出すことができます。この記事では、実際のコード例とともに、さまざまなパターンでの数値抽出の方法を解説します。文字列を解析し、必要な情報を抜き出すスキルは、テスターにとって欠かせない能力の一つです。特にAPIテストでは、JSONやXML形式のレスポンスを解析する場面が多く、正規表現の知識が大いに役立ちます。以下では、Javaの正規表現を使って文字列から数字・数値を抽出する具体的な例を紹介します。文字列からすべての数値を抽出するimport java.util.regex.Matcher; imp