# MatchRegEx - スクリプトおよびチャート関数

MatchRegEx() は、入力文字列を 1 つ以上の指定された正規表現パターンと比較し、一致する正規表現パターンの数値位置を返します。一致するものが見つからない場合、関数は 0 を返します。この関数は完全一致のみを検索します。

この関数は、大文字と小文字を区別する正規表現操作を実行します。代わりに、バリアント MatchRegExI() を使用して、大文字と小文字を区別しない正規表現操作を実行することもできます。

構文:

MatchRegEx (text, regex1 [ , regex2,...regexN])

戻り値データ型： 整数

引数

| 引数 | 説明 |
| --- | --- |
| text | 1 つ以上の正規表現と一致させる入力文字列テキスト。 |
| regex | 入力文字列に一致させようとする正規表現。1 つの数式に複数の正規表現を指定し、後続の引数として区切ることができます。 |

関数の例

| 例 | 結果 |
| --- | --- |
| `MatchRegEx('abc123','[a-z]','[0-9]','[a-z]+[0-9]+','.+')` | `3` を返します。3 番目の正規表現パターンがデータに最初に一致します。 |
| `MatchRegEx('ABC','[abc]+','[123]')` | MatchRegEx() は大文字と小文字を区別するため、`0` を返します。 |
| `MatchRegExI('ABC','[abc]+','[123]')` | `1` を返します。関数の大文字と小文字を区別しないバリアント MatchRegExI() が使用されます。 |

## 使用に適しているケース

この関数のユース ケースは次のとおりです。

* テキストを検証して、書式設定とコンプライアンスの標準を満たし、データ内のエラーを特定します。

* テキストの書式設定の方法の違いを識別します。たとえば、形式 A、形式 B などを使用する電話番号の数を識別できます。

## 例 1 - 電話番号の形式を分析するロード スクリプト

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/MatchRegEx.htm)

#### ロード スクリプトと結果

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* さまざまな企業の連絡先電話番号を含むテーブル `BusinessContactInfo` 。電話番号は 10 桁の NANP 電話番号です。

* 各電話番号が特定の電話番号形式セットのいずれかに一致するかどうかを評価するための計算された項目 `PhoneNumberFormat`。

確認する形式は、(###) ###-####、###-###-####、######### の 3 つあります。

ロード スクリプト

```
BusinessContactInfo:

Load MatchRegEx(ContactInfo,'\({0,1}[0-9]{3}\) [0-9]{3}-[0-9]{4}', '[0-9]{3}-[0-9]{3}-[0-9]{4}', '[0-9]{10}') as PhoneNumberFormat,
* Inline `
ID	CompanyName	ContactInfo
1	Company A	(123) 456-7890
2	Company B	0123456790
3	Company C	234-567-8901
4	Company D	(024) 680-2456
5	Company E	(135) 791-3579
6	Company F	8901234567
7	Company G	235-235-2352
8	Company H	(555) (555) (5555)
9	Company I	2342342343
10	Company J	444-444-4444
` (delimiter is '\t');
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* `CompanyName`

* `ContactInfo`

* `PhoneNumberFormat`

結果テーブル

| CompanyName | ContactInfo | PhoneNumberFormat |
| --- | --- | --- |
| Company A | (123) 456-7890 | 1 |
| Company B | 0123456790 | 3 |
| Company C | 234-567-8901 | 2 |
| Company D | (024) 680-2456 | 1 |
| Company E | (135) 791-3579 | 1 |
| Company F | 8901234567 | 3 |
| Company G | 235-235-2352 | 2 |
| Company H | (555) (555) (5555) | 0 |
| Company I | 2342342343 | 3 |
| Company J | 444-444-4444 | 2 |

たとえば、ここから、各電話番号形式の合計数と認識された形式を持たない電話番号の数を計算する KPI を作成できます。

各形式の出現回数をカウントする集計式の例

| 形式 | インスタンスの数 | チャートの数式 |
| --- | --- | --- |
| (###) ###-#### | 3 | =Count({&lt;PhoneNumberFormat={'1'}&gt;} PhoneNumberFormat) |
| ###-###-#### | 3 | =Count({&lt;PhoneNumberFormat={'2'}&gt;} PhoneNumberFormat) |
| ########## | 3 | =Count({&lt;PhoneNumberFormat={'3'}&gt;} PhoneNumberFormat) |
| Unrecognized format | 1 | =Count({&lt;PhoneNumberFormat={'0'}&gt;} PhoneNumberFormat) |

## 例 2 - ISBN 形式を識別するチャートの数式

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/MatchRegEx.htm)

#### チャートの数式および結果

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* さまざまな書籍の ISBN コードを一覧表示したテーブル `Books`。

このデータから、正規表現パターンで指定された構文に基づいて、各 ISBN コードが有効な 10 桁コードであるか 13 桁コードであるかを識別します。

ロード スクリプト

```
Books:

Load * Inline [
Book
ISBN 123-3-1234-1234-0
ISBN 012-2-0123-0123-4
ISBN 000-1-0123-0123-2
ISBN 0-111-23456-7
ISBN 555-2-5555-5555-3
ISBN 222-4-2222-2222-2
ISBN 1-901-23456-8
ISBN 333-3-3333-3333-3
ISBN 555-1-5151-5151-3
ISBN 232-1-2323-2323-1
ISBN 2-444-44444-4
ISBN 888-0-9999-0000-0
];
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:

* `Book`

この計算軸を追加し、ISBN Format というラベルを付けます。

```
=if(MatchRegEx(Book, 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})', 'ISBN[ ]*([0-9]{1})-([0-9]{3})-([0-9]{5})-([0-9]{1})')=1, '13-digit', 
	if(MatchRegEx(Book, 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})', 'ISBN[ ]*([0-9]{1})-([0-9]{3})-([0-9]{5})-([0-9]{1})')=2, '10-digit',
		'Invalid ISBN'))
```

結果テーブル

| Book | ISBN Format |
| --- | --- |
| ISBN 000-1-0123-0123-2 | 13-digit |
| ISBN 0-111-23456-7 | 10-digit |
| ISBN 1-901-23456-8 | 10-digit |
| ISBN 2-444-44444-4 | 10-digit |
| ISBN 012-2-0123-0123-4 | 13-digit |
| ISBN 123-3-1234-1234-0 | 13-digit |
| ISBN 222-4-2222-2222-2 | 13-digit |
| ISBN 232-1-2323-2323-1 | 13-digit |
| ISBN 333-3-3333-3333-3 | 13-digit |
| ISBN 555-1-5151-5151-3 | 13-digit |
| ISBN 555-2-5555-5555-3 | 13-digit |
| ISBN 888-0-9999-0000-0 | 13-digit |

## 詳細を見る

* [ロード スクリプトとチャートの数式での正規表現の使用](https://help.qlik.com/ja-JP/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)