目次
はじめに
正規表現の基礎知識:パターンマッチングの強力なツール
メタ文字
|
説明
|
例
|
例のマッチング結果
|
*
|
直前の文字やグループが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"
|
メタ文字
|
説明
|
例
|
例のマッチング結果
|
.
|
改行文字を除く任意の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"
|
メタ文字 | 説明 | 例 |
例のマッチング結果
|
^ | 行の先頭にマッチ | ^abc | "abcde" |
$ | 行の末尾にマッチ | abc$ | "xyzabc" |
メタ文字 | 説明 | 例 |
例のマッチング結果
|
() | グループ化、キャプチャ | (ab)+ | "ab", "abab" |
メタ文字 | 説明 | 例 |
例のマッチング結果
|
\ | メタ文字をエスケープ(文字そのものとして扱う) | \. | . (ドット文字) |
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]) | 指定された正規表現パターンを区切り文字として使用して、入力文字列からテキストを抽出する。 | スクリプト、チャート |
関数の詳細と使用例
ExtractRegExI
, ReplaceRegExI
)も用意されています。ExtractRegEx(text, regex [, field_no])
機能: 指定された正規表現パターンに一致するテキストを入力文字列から抽出します。
例1:テキストから数字文字列を抽出
「+
」: これは「量指定子」と呼ばれるメタ文字で、直前の要素が「1回以上」繰り返される場合にマッチすることを示します。'abc123def456'
」という文字列の中から、「1回以上繰り返される数字の連続」を探し、その中で最初に見つかったものを抽出します。'abc123def456'
」という文字列の中から、「1回以上繰り返される数字の連続」を探し、その中で2番目に見つかったものを抽出します。
例2:JSON文字列からメールアドレスを抽出
解説:
@example.com
」ドメインのメールアドレスを抽出します。ExtractRegExGroup(text, regex, group [, field_no])
機能: 複合正規表現パターンを使用して入力文字列からテキストを抽出し、指定されたグループのテキストを返します。
例:パスワードの強度チェック
正規表現の活用例:実践的なシナリオ
Qlik Senseにおける正規表現機能は、非構造化テキストデータからの情報抽出、データの標準化、そして機密情報の保護においてその真価を発揮します。
情報抽出と標準化
正規表現は、メールアドレス、電話番号、URL、トランザクションコードなど、多様なデータ型を抽出・標準化する汎用的なツールとして機能します。これにより、データ品質と統合性が向上し、一貫した分析が可能になります。
データクレンジングと検証
データの入力ミスや不整合は、分析結果の信頼性を損ないます。正規表現を使用することで、データのパターンを定義し、それに合致しないデータを特定・修正したり、入力時に検証したりすることが可能です。例えば、郵便番号や日付のフォーマットを検証し、標準化することができます。
機密情報のマスキングと保護
個人識別情報(PII)やその他の機密データは、セキュリティとプライバシーの観点から保護される必要があります。正規表現の置換機能 (ReplaceRegExGroup
など) を使用することで、特定のパターンに一致する機密情報を自動的にマスキングし、データガバナンスとコンプライアンスを強化できます。