お問い合わせ
14 分で読むことができます。

【新機能】正規表現をマスター!データ活用の可能性を広げる

2025年6月26日

目次

はじめに

現代のデータ分析において、生データはしばしば不整合な形式や、複雑なテキスト情報を含んでいます。このような「ダーティデータ」から意味のある情報を抽出し、分析に活用するためには、高度な文字列操作が不可欠です。そこで注目されるのが「正規表現(Regular Expression、略してRegexまたはRegExp)」です。
 
Qlik Senseは、この強力な正規表現機能をQlik Sense Enterprise on Windowsの最新バージョンである【May 2025】からサポートしており、データロードスクリプトとチャート式の両方で利用できます。これにより、データ準備から分析、そして視覚化の各段階において、シームレスな文字列操作が可能になります。
 
※Qlik Cloudでは先行して機能リリースがされています。
 
本記事では、Qlik Senseにおける正規表現の基礎から、具体的な関数の使い方、そして実践的な活用シナリオまでを詳しく解説します。

 

正規表現の基礎知識:パターンマッチングの強力なツール

正規表現は、特定の文字列パターンを記述するための強力な言語です。これにより、固定された文字列ではなく、「パターン」に合致するデータを効率的に見つけ出すことができます。Qlik Senseで利用可能な正規表現関数は、柔軟性と強力な機能セットで広く知られるPerl正規表現構文を採用しています。これにより、他のプログラミング環境で培った正規表現の知識をQlik Senseに直接適用できるため、学習コストを低減できます。
 
正規表現のパターンは、通常の文字と特別な意味を持つ「メタ文字」の組み合わせで構成されます。これらのメタ文字を理解することが、効果的な正規表現を記述する鍵となります。
 
代表的なメタ文字一覧
 
1. 量指定子 (Quantifiers)
メタ文字
説明
例のマッチング結果
*
直前の文字やグループが0回以上繰り返される
ab*c
"ac", "abc", "abbc"
+
直前の文字やグループが1回以上繰り返される
ab+c
"abc", "abbc"
?
直前の文字やグループが0回または1回現れる
colou?r
"color", "colour"
{n}
直前の要素がn回繰り返される
a{3}
"aaa"
{n,}
直前の要素がn回以上繰り返される
a{2,}
"aa", "aaa", "aaaa..."
{n,m}
直前の要素がn回以上m回以下繰り返される
a{1,3}
"a", "aa", "aaa"
 
2. 文字クラス (Character Classes)
メタ文字
説明
例のマッチング結果
.
改行文字を除く任意の1文字にマッチ
a.c
"abc", "axc", "a1c"
[]
角括弧内に含まれる任意の1文字にマッチ
(範囲指定も可)
[a-z]
"a", "b",..., "z"
[^]
角括弧内の文字以外にマッチ
[^0-9]
数字以外の任意の1文字
\d
任意の数字 ( [0-9] と同等)
\d{3}
"123", "987"
\w
英数字とアンダースコア
\w+
"word", "test_1"
\s
空白文字
a\sb
"a b"
 
3. アンカー (Anchors)
メタ文字 説明
例のマッチング結果
^ 行の先頭にマッチ ^abc "abcde"
$ 行の末尾にマッチ abc$ "xyzabc"
 
4. グループ化と参照 (Grouping & Backreferences)
メタ文字 説明
例のマッチング結果
() グループ化、キャプチャ (ab)+ "ab", "abab"

 

5. エスケープ文字 (Escape Character)
メタ文字 説明
例のマッチング結果
\ メタ文字をエスケープ(文字そのものとして扱う) \. . (ドット文字)

 

Qlik Senseにおける正規表現関数:高度な文字列操作を可能に

Qlik Senseは、ロードスクリプトとチャート式の両方で利用できる豊富な正規表現関数を提供します。これにより、テキストデータの高度なパターンマッチング、抽出、置換、検証が可能になります。
 

主要な正規表現関数一覧

関数名
機能概要
利用可能な場所
CountRegEx(text, regex) 入力文字列内で指定された正規表現パターンが一致する回数を返す。一致がない場合は0を返す。 スクリプト、チャート
ExtractRegEx(text, regex [, field_no]) 指定された正規表現パターンを使用して入力文字列からテキストを抽出する。一致が見つからない場合はnullを返す。 スクリプト、チャート
ExtractRegExGroup(text, regex, group [, field_no]) 複合正規表現パターンを使用して入力文字列からテキストを抽出し、指定されたグループのテキストを返す。一致が見つからない場合はnullを返す。 スクリプト、チャート
IndexRegEx(text, regex [, count])
入力文字列内で指定された正規表現パターンのn番目の出現の開始位置を返す。
スクリプト、チャート
IndexRegExGroup(text, regex, group [, count]) 複合正規表現パターンを使用して入力文字列からテキストを抽出し、指定されたグループのn番目の出現の開始位置を返す。 スクリプト、チャート
IsRegEx(expr [, debug]) 指定されたテキストが有効な正規表現であるかどうかを返す。 スクリプト、チャート
MatchRegEx(text, regex1 [, regex2,...]) 入力文字列を1つ以上の正規表現パターンと比較し、一致するパターンの数値位置を返す。 スクリプト、チャート
ReplaceRegEx(text, regex, to_str [, occurrence]) 入力文字列と正規表現パターンとの間の一致を新しいテキストに置換した文字列を返す。 スクリプト、チャート
ReplaceRegExGroup(text, regex, to_str, group [, occurrence]) 複合正規表現パターンを使用して入力文字列と一致する部分文字列の指定されたグループを置換した文字列を返す。 スクリプト、チャート
SubFieldRegEx(text, regex_delimiter [, field_no]) 指定された正規表現パターンを区切り文字として使用して、入力文字列からテキストを抽出する。 スクリプト、チャート

 

関数の詳細と使用例

Qlik Senseの正規表現関数には、大文字・小文字を区別しない操作を可能にするために、関数名の末尾に「I」が付加されたバリアント(例: ExtractRegExI, ReplaceRegExI)も用意されています。
 

ExtractRegEx(text, regex [, field_no])                  

機能: 指定された正規表現パターンに一致するテキストを入力文字列から抽出します。

例1:テキストから数字文字列を抽出

ExtractRegEx('abc123def456', '\d+')      // 結果: '123'
解説:
\d」:これは「数字」を意味するメタ文字です。0から9までの任意の1桁の数字にマッチします。
+」: これは「量指定子」と呼ばれるメタ文字で、直前の要素が「1回以上」繰り返される場合にマッチすることを示します。
この数式は、「'abc123def456'」という文字列の中から、「1回以上繰り返される数字の連続」を探し、その中で最初に見つかったものを抽出します。
 
ExtractRegEx('abc123def456', '\d+', 2)   // 結果: '456'
解説:
\d」「+」は同上です。「2」は関数の第三引数で、n番目に一致した部分を抽出することができます。
この数式は、「'abc123def456'」という文字列の中から、「1回以上繰り返される数字の連続」を探し、その中で2番目に見つかったものを抽出します。
 

例2:JSON文字列からメールアドレスを抽出

ExtractRegEx(メールアドレス, '[a-zA-Z0-9!#$%^&*-_+=~{|}\\/. '']+@example.com', 1) as Email1
解説:
「メールアドレス」フィールドから、「@example.com」ドメインのメールアドレスを抽出します。
 

ExtractRegExGroup(text, regex, group [, field_no])         

機能: 複合正規表現パターンを使用して入力文字列からテキストを抽出し、指定されたグループのテキストを返します。

例:パスワードの強度チェック

=If(MatchRegEx(パスワード, '^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+])[A-Za-z\d!@#$%^&*()_+]{8,}$'), '強いパスワード', '弱いパスワード')
解説:
「8文字以上、大文字、小文字、数字、記号をそれぞれ1つ以上含む」といった複雑な条件を満たしているか検証する。
 

正規表現の活用例:実践的なシナリオ

Qlik Senseにおける正規表現機能は、非構造化テキストデータからの情報抽出、データの標準化、そして機密情報の保護においてその真価を発揮します。

情報抽出と標準化

正規表現は、メールアドレス、電話番号、URL、トランザクションコードなど、多様なデータ型を抽出・標準化する汎用的なツールとして機能します。これにより、データ品質と統合性が向上し、一貫した分析が可能になります。

データクレンジングと検証

データの入力ミスや不整合は、分析結果の信頼性を損ないます。正規表現を使用することで、データのパターンを定義し、それに合致しないデータを特定・修正したり、入力時に検証したりすることが可能です。例えば、郵便番号や日付のフォーマットを検証し、標準化することができます。

機密情報のマスキングと保護

個人識別情報(PII)やその他の機密データは、セキュリティとプライバシーの観点から保護される必要があります。正規表現の置換機能 (ReplaceRegExGroupなど) を使用することで、特定のパターンに一致する機密情報を自動的にマスキングし、データガバナンスとコンプライアンスを強化できます。

 

まとめ

Qlik Senseにおける正規表現のネイティブサポートは、データ分析のワークフローに革新をもたらします。複雑な文字列データの処理を効率化し、データ品質を向上させることで、より深く、より信頼性の高いインサイトを導き出すことが可能になります。ぜひ、これらの強力な正規表現機能を活用し、Qlik Senseでのデータ分析の可能性を最大限に引き出してください。
Kaz

Written by Kaz

Qlik_No1_2022
QSナレッジ事例バナー
DXバナー
Qlikseminar
qs_trial
Qllikseminar
Vizlibナレッジ
Vizlibセミナー
qv_knowledge
book_kawaii
Snowflake_バナー

新着記事

タグ別の記事

全て表示