MySQL正規表現の使い方:文字列内に含まれる数字をマッチさせる方法
MySQLのREGEXPで文字列内の数字を検索する方法
MySQLでは、REGEXP演算子を使うことで、文字列の中に数字が含まれているレコードを簡単に抽出できます。文字列内の数字(0〜9)にマッチさせたい場合は、以下のような構文を使用します。
SELECT * FROM テーブル名 WHERE カラム名 REGEXP '[0-9]';
なお、正規表現では [0-9] の代わりに \\d を使うこともできますが、MySQLのREGEXPでは文字クラス [0-9] を指定するのが最も確実で一般的な方法です。
サンプルテーブルの作成
実際に動作を確認するために、まずテーブルを作成しましょう。
mysql> CREATE TABLE DemoTable1841
(
Code varchar(20)
);
Query OK, 0 rows affected (0.00 sec)
テストデータの挿入
次に、INSERT文を使っていくつかのレコードを挿入します。数字を含む文字列と含まない文字列を混ぜて登録します。
mysql> INSERT INTO DemoTable1841 VALUES('John231');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1841 VALUES('19876Sam');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1841 VALUES('Carol');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1841 VALUES('67474');
Query OK, 1 row affected (0.00 sec)
登録データの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> SELECT * FROM DemoTable1841;
実行結果は以下の通りです。
+----------+ | Code | +----------+ | John231 | | 19876Sam | | Carol | | 67474 | +----------+ 4 rows in set (0.00 sec)
正規表現で数字を含むレコードを抽出する
ここで、文字列内に数字が含まれるレコードだけを取り出すための正規表現クエリを実行します。
mysql> SELECT * FROM DemoTable1841 WHERE Code REGEXP '[0-9]';
実行結果は以下の通りです。
+----------+ | Code | +----------+ | John231 | | 19876Sam | | 67474 | +----------+ 3 rows in set (0.00 sec)
結果の解説
ご覧のとおり、「John231」「19876Sam」「67474」のように数字を1つでも含むレコードのみが抽出され、数字を一切含まない「Carol」は除外されました。
REGEXP '[0-9]' は「文字列のどこかに0〜9のいずれかの数字が1文字以上存在する」ことを意味します。部分一致で判定されるため、先頭や末尾に数字があるかどうかにかかわらず、文字列中の任意の位置にある数字を検出できます。
応用:複数桁の数字や特定パターンのマッチング
さらに応用として、以下のようなパターンもよく使われます。
- 2桁以上の連続した数字:
REGEXP '[0-9]{2}' - 先頭が数字の文字列:
REGEXP '^[0-9]' - 末尾が数字の文字列:
REGEXP '[0-9]$' - 数字のみで構成された文字列:
REGEXP '^[0-9]+$'
このように、MySQLのREGEXP演算子と文字クラスを組み合わせることで、柔軟な文字列検索が可能になります。データのバリデーションやクリーニングの際にも非常に便利なので、ぜひ活用してみてください。
-
Javaの正規表現(RegEx)で数字をマッチングする方法
Javaでは、文字列内の数字(0〜9)をマッチングするために、正規表現のメタ文字「\d」を使用できます。また、同じ意味を持つ文字クラス「[0-9]」を使うことも可能です。[0-9]この記事では、実際のコード例を通じて、数字のマッチング方法をわかりやすく解説します。例1:文字列に含まれる数字の個数を数える次の例では、ユーザーから入力された文字列に対して正規表現「\d」を適用し、含まれる数字の総数をカウントして表示します。import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern;
-
Pythonの正規表現で文字列からデータを抽出する方法
Pythonでは、標準ライブラリのreモジュールを使って正規表現による文字列処理が行えます。パターン内で()によるグループ化を利用すると、「first_id」「second_id」「category」のような複数のデータを1つの文字列から簡単に取り出すことができます。コード例以下のコードは、ファイル名「TS001B01.JPG」から各部分を抽出する例です。import re s = TS001B01.JPG match = re.match(r(TS\d+)([A|B])(\d+)\.JPG, s) first_id = match.group(1) category = match.gr