# CountRegEx funkcja skryptu i funkcja wykresu

Funkcja CountRegEx() zwraca liczbę wystąpień określonego wzorca wyrażenia regularnego w tekście ciągu wejściowego. W przypadku braku dopasowań zwracane jest 0.

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

Składnia:

CountRegEx (text, regex)

Typ zwracanych danych: liczbowy

Argumenty

| Argument | Opis |
| --- | --- |
| text | Tekst ciągu wejściowego, w którym ma być wyszukiwane wyrażenie regularne. |
| regex | Wzorzec wyrażenia regularnego do wyszukania. |

Przykłady funkcji

| Przykład | Wynik |
| --- | --- |
| `CountRegEx('abc123','[a-z]')` | Zwraca wartość `3`. |
| `CountRegEx('abc123','[a-z][0-9]')` | Zwraca wartość `1`. |
| `CountRegEx('abc123','[0-9]')` | Zwraca wartość `3`. |
| `CountRegEx('ABC','[a-z]{3}')` | Zwraca wartość `0`. |
| `CountRegExI('ABC','[a-z]{3}')` | Zwraca wartość `1`. Ponieważ używany jest wariant CountRegExI(), w wyszukiwaniu tekstowym nie jest rozróżniana wielkość liter. |

## Kiedy używać

Przykłady zastosowań funkcji CountRegEx() obejmują:

* Zliczanie liczby wystąpień określonego wzorca tekstowego w ciągu znaków. Można na przykład wyszukiwać wystąpienia adresów e-mail, numerów telefonów i innych informacji w dokumentach i wiadomościach e-mail.

* Sprawdzanie, czy dane są zgodne z określonymi wymaganiami dotyczącymi składni. Można na przykład zidentyfikować przypadki błędów przy wprowadzaniu danych.

## Przykład 1 — skrypt ładowania do zliczania ważnych zakresów lat

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/CountRegEx.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 o nazwie `Vehicles` zawierająca wykaz pojazdów wraz ze stanem i rokiem modelowym każdego pojazdu.

* Dla każdego rekordu na stronie `Vehicles` przeprowadzane jest obliczenie w celu określenia, czy zakres lat dla pojazdu jest zgodny z oczekiwaną składnią. Obowiązujące zakresy lat obejmują lata 1990., 2000., 2010. i 2020. Obliczenia te są wykonywane przy użyciu funkcji CountRegEx().

Skrypt ładowania

```
Vehicles:
Load CountRegEx(Model_YearRange, '(^19[0-9][0-9]s$)|(^20[0-9][0-9]s$)') as Valid_Year_Data,
* Inline [
Vehicle_ID, Condition, Model_YearRange
1, Good,20100s
2,Fair,2020s
3, Poor,2020s
4, Good,210s
5, Excellent,2000s
6, Excellent,2020s
7, Excellent,202s
8, Good,2010s
9, Poor,2010ss
10, Poor,1990s
];
```

Wyniki

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

* `Vehicle_ID`

* `Valid_Year_Data`

Tabela wynikowa

| Vehicle\_ID | Valid\_Year\_Data |
| --- | --- |
| 1 | 0 |
| 2 | 1 |
| 3 | 1 |
| 4 | 0 |
| 5 | 1 |
| 6 | 1 |
| 7 | 0 |
| 8 | 1 |
| 9 | 0 |
| 10 | 1 |

Możesz również dodać wskaźnik KPI do arkusza i dodać tę miarę:

```
Sum(Valid_Year_Data)
```

Ten wykres pokazuje całkowitą liczbę rekordów z prawidłowymi wartościami Model\_YearRange.

InformacjaFunkcja MatchRegEx() jest również przydatna w takich zastosowaniach sprawdzania poprawności.

## Przykład 2 — skrypt ładowania do zliczania adresów e-mail w ciągach tekstowych

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/CountRegEx.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 o nazwie `Employees` zawierająca dane o pracownikach firmy. Wszystkie adresy e-mail każdego pracownika są zawarte w jednym ciągu znaków.

* Utworzenie pola `NoOfEmails` w celu obliczenia, ile adresów e-mail znajduje się w ciągu wejściowym dla każdego pracownika.

Skrypt ładowania

```
Employees:

Load CountRegExI(Emails, '@[a-zA-Z0-9.-]*\.?[a-zA-Z0-9]*\.com') as NoOfEmails,
* Inline `
ID	Emails
1	john_doe@test.com john_michael_doe@example.com j.doe123@example123.com
2	jane_doe@test.com
3	Michael_Andrews@test.com Michael_John_Andrews@example.com
4	charlie_kent@support.test.com charlie_peter_kent@support.example.com cp.kent.1985@test123.com c_p_kent@test123.com
5	frances_johnson@test.com frances_johnson@example.com
6	rebecca_smith@hr.test.com
` (delimiter is '\t');
```

Wyniki

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

* `ID`

* `Emails`

* `NoOfEmails`

Tabela wynikowa

| ID | Emails | NoOfEmails |
| --- | --- | --- |
| 1 | john\_doe@test.com john\_michael\_doe@example.com j.doe123@example123.com | 3 |
| 2 | jane\_doe@test.com | 1 |
| 3 | Michael\_Andrews@test.com Michael\_John\_Andrews@example.com | 2 |
| 4 | charlie\_kent@support.test.com charlie\_peter\_kent@support.example.com cp.kent.1985@test123.com c\_p\_kent@test123.com | 4 |
| 5 | frances\_johnson@test.com frances\_johnson@example.com | 2 |
| 6 | rebecca\_smith@hr.test.com | 1 |

## Przykład 3 — wyrażenie wykresu zliczające wystąpienia ciągu znaków

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

#### Wyrażenie wykresu i wyniki

Przegląd

Otwórz Edytor ładowania danych i dodaj następujący skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera tekst z korespondencji firmowej, która została wysłana do pracowników pewnej organizacji. Dane zostały już oczyszczone z wszelkich danych osobowych z wyjątkiem nazwy firmy i adresu e-mail, z którego wysłano każdą korespondencję. Treść każdej wiadomości została skondensowana w pojedynczy ciąg znaków. Innymi słowy, wszystkie znaki formatowania i nowej linii zostały usunięte.

Nasze wymagania:

* Określenie, które wiadomości zawierają ciąg znaków zawierający adres e-mail TestCompanyNameCorrespondence@test.com, wraz z określonym wprowadzeniem do tego adresu, które wskazuje, że był on adresem nadawcy.

* Chcemy mieć swobodę w wyborze wprowadzeń do identyfikacji, ale także nadal mieć pewne określone ograniczenia. Wprowadzenia Sender i Sent by są uważane za ważne. Aby osiągnąć ten cel, można użyć wzorców wyrażeń regularnych.

* Wielkość liter w adresach e-mail nie ma znaczenia. W związku z tym nie powinna mieć znaczenia wielkość liter w wyszukiwaniu.

Skrypt ładowania

```
Correspondences:
Load * Inline [
ID|MessageBody
1|Sent by-- TestCompanyNameCorrespondence@test.com Good morning TestCompanyName team! I hope you are all well. I am just reaching out about the fabulous benefits package we launched just year. Our goal is to take a poll of what you all think. Can you please rate the new options from 1-10 in a response to this email, by this Tuesday? Thank you! 
2|Sender: TestCompanyNameIT@test.com Did you know you can access our IT portal anytime, from any of your company devices? It's true! Reach out to your team lead to learn more.
3|Sender: TESTCOMPANYNAMECORRESPONDENCE@test.COM URGENT: This is a message to inform employees of an ongoing issue with our local branch. The branch will be closed until further notice. Thank you
4|Sender: TestCompanyNameVolunteering@test.com Dear team! We are looking for volunteers to help with this year's charity event! We need 40 volunteers to help with the event. If you are interested, please send an email to your direct supervisor. Thanks, TestCompanyName team members, for helping make the world a better place!
5|Sender is TestCompanyNameCorrespondence@test.com Hi folks, it's time to announce the annual TestCompanyName staff party! The party will be taking place at the office this year. Please make sure to RSVP, and we hope to see you there! Sincerely, the TestCompanyName management team
] (delimiter is |);
```

Wyniki

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

* ID

* MessageBody

Dodaj następującą miarę:

```
=CountRegExI(MessageBody,'(Sender.*TestCompanyNameCorrespondence@test.com)|(Sent by.*TestCompanyNameCorrespondence@test.com)')
```

We właściwościach miary ustaw Funkcję sumy na Sum. Konfiguruje to wiersz sum w górnej części tabeli tak, aby zliczał całkowitą liczbę rekordów, które przyczyniają się do zliczania.

Miara zlicza liczbę dopasowań do określonego wzorca wyrażeń regularnych w treści wiadomości. We wzorcu wyrażeń regularnych .\* oznacza dowolną liczbę dowolnych znaków z wyjątkiem znaków nowej linii. Wzorzec uwzględnia również różnice we wprowadzeniach do adresów e-mail: zarówno Sender, jak i Sent by są poprawnymi dopasowaniami. Wariant funkcji CountRegExI() zapewnia wyszukiwanie bez uwzględniania wielkości liter.

Tabela wynikowa

| ID | MessageBody | =CountRegExI(MessageBody,'(Sender.\*TestCompanyNameCorrespondence@test.com)\|(Sent by.\*TestCompanyNameCorrespondence@test.com)') |
| --- | --- | --- |
| Totals | - | 3 |
| 1 | Sent by-- TestCompanyNameCorrespondence@test.com Good morning TestCompanyName team! I hope you are all well. I am just reaching out about the fabulous benefits package we launched just year. Our goal is to take a poll of what you all think. Can you please rate the new options from 1-10 in a response to this email, by this Tuesday? Thank you! | 1 |
| 2 | Sender: TestCompanyNameIT@test.com Did you know you can access our IT portal anytime, from any of your company devices? It's true! Reach out to your team lead to learn more. | 0 |
| 3 | Sender: TESTCOMPANYNAMECORRESPONDENCE@TEST.COM URGENT: This is a message to inform employees of an ongoing issue with our local branch. The branch will be closed until further notice. Thank you | 1 |
| 4 | Sender: TestCompanyNameVolunteering@test.com Dear team! We are looking for volunteers to help with this year's charity event! We need 40 volunteers to help with the event. If you are interested, please send an email to your direct supervisor. Thanks, TestCompanyName team members, for helping make the world a better place! | 0 |
| 5 | Sender is TestCompanyNameCorrespondence@test.com Hi folks, it's time to announce the annual TestCompanyName staff party! The party will be taking place at the office this year. Please make sure to RSVP, and we hope to see you there! Sincerely, the TestCompanyName management team | 1 |

Wśród pięciu wiadomości znajdują się trzy, które pasują do określonego wzorca wyrażeń regularnych. Każda wiadomość zawiera jedno dopasowanie.

InformacjaFunkcja MatchRegEx() jest również przydatna w takich zastosowaniach sprawdzania poprawności.

## Dowiedz się więcej

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