# MatchRegEx funkcja skryptu i funkcja wykresu

MatchRegEx() porównuje ciąg wejściowy (text) z jednym lub większą liczbą wyrażeń regularnych (regex). Zwraca numeryczną lokalizację wzorców wyrażeń regularnych, które pasują. Zwraca odpowiedź dopasowania tylko jeśli ocena wyrażenia regularnego pasuje do całego tekstu wejściowego. Jeśli nie zostaną znalezione żadne dopasowania, funkcja zwraca 0.

Funkcja ta wykonuje operacje z wyrażeniami regularnymi, w których rozróżniana jest wielkość liter. Zamiast tego można użyć wariantu MatchRegExI(), aby wykonywać operacje z wyrażeniami regularnymi bez rozróżniania wielkości liter.

Składnia:

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

Typ zwracanych danych: liczba całkowita

Argumenty

| Argument | Opis |
| --- | --- |
| text | Tekst ciągu wejściowego, do którego chcesz dopasować jedno lub więcej wyrażeń regularnych. Aby nastąpiło dopasowanie, ten ciąg wejściowy musi być dokładnym dopasowaniem do regex wzorca. |
| regex | Wyrażenie regularne, które ma zostać dopasowane do ciągu wejściowego. W pojedynczym wyrażeniu można podać więcej wyrażeń regularnych, oddzielonych jako kolejne argumenty. |

Przykłady funkcji

| Przykład | Wynik |
| --- | --- |
| `MatchRegEx('testSample','test')` | Zwraca wartość `0`. Funkcja zwraca odpowiedź dopasowania tylko wtedy, gdy istnieje dokładne dopasowanie między text a regex wzorcem. Mimo że `testSample` zawiera `test`, zawiera inny tekst (`Sample`), co uniemożliwia dokładne dopasowanie. |
| `MatchRegEx('abc123','[a-z]','[0-9]','[a-z]+[0-9]+','.+')` | Zwraca `3`. Trzeci wzorzec regex jest pierwszym, który pasuje do danych. |
| `MatchRegEx('ABC','[abc]+','[123]')` | Zwraca `0`, ponieważ MatchRegEx() rozróżnia wielkość liter. |
| `MatchRegExI('ABC','[abc]+','[123]')` | Zwraca `1`. Jest używany wariant funkcji MatchRegExI(), który nie uwzględnia wielkości liter. |

## Kiedy używać MatchRegEx

Zastosowania tej funkcji są następujące:

* Weryfikacja tekstu pod kątem zgodności z formatowaniem i standardami oraz identyfikacja błędów w danych.

* Identyfikacja różnic w sposobie formatowania tekstu. Na przykład można określić, ile numerów telefonów używa formatu A, formatu B itd.

## Przykład 1 — skrypt ładowania do analizy formatów numerów telefonów

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

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Tabela `BusinessContactInfo` zawierająca numery telefonów kontaktowych do różnych firm. Numery telefonów są 10-cyfrowymi numerami NANP.

* Pole wyliczane, `PhoneNumberFormat`, służące do oceny, czy każdy numer telefonu pasuje do jednego z określonego zestawu formatów numerów telefonów.

Istnieją trzy różne formaty, które chcemy sprawdzić: (###) ###-####, ###-###-#### i ##########.

Skrypt ładowania

```
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');
```

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `CompanyName`

* `ContactInfo`

* `PhoneNumberFormat`

Tabela wynikowa

| 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 |

Można teraz, na przykład, utworzyć wskaźniki KPI, aby obliczyć całkowitą liczbę każdego formatu numeru telefonu, a także liczbę numerów telefonów, które nie mają rozpoznanego formatu:

Przykłady wyrażeń agregujących do zliczania wystąpień każdego formatu

| Format | Liczba wystąpień | Wyrażenie wykresu |
| --- | --- | --- |
| (###) ###-#### | 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) |

## Przykład 2 — wyrażenie wykresu identyfikujące format ISBN

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

#### Wyrażenie wykresu i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Tabela `Books` zawierająca kody ISBN różnych książek.

Na podstawie tych danych chcemy zidentyfikować, czy każdy kod ISBN jest prawidłowym kodem 10-cyfrowym lub 13-cyfrowym, w oparciu o składnię określoną we wzorcu regex.

Skrypt ładowania

```
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
];
```

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar:

* `Book`

Dodaj ten wymiar wyliczany i nadaj mu etykietę 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'))
```

Tabela wynikowa

| 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 |

## Dowiedz się więcej

* [Praca z wyrażeniami regularnymi w skryptach ładowania i wyrażeniach wykresu](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)