[comment]: # ({4151d28b-4151d28b})
# 12 Expressions régulières

[comment]: # ({/4151d28b-4151d28b})

[comment]: # ({091ac9cf-17ed5ab5})
#### Vue d'ensemble

[Perl Compatible Regular Expressions](https://en.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions) (PCRE, PCRE2) sont prises en charge dans Zabbix.

Il existe deux façons d'utiliser les expressions régulières dans Zabbix :

-   saisir manuellement une expression régulière
-   utiliser une expression régulière globale créée dans Zabbix

[comment]: # ({/091ac9cf-17ed5ab5})

[comment]: # ({0b3010e2-439895e1})
#### Expressions régulières

Vous pouvez saisir manuellement une expression régulière dans les emplacements pris en charge.
Notez que l'expression ne peut pas commencer par @, car ce symbole est utilisé dans Zabbix pour faire référence aux expressions régulières globales.

::: noteimportant
Il est possible de manquer de mémoire de pile lors de l'utilisation d'expressions régulières.
Consultez [PCRE PERFORMANCE](https://www.pcre.org/original/doc/html/pcreperform.html) pour plus d'informations.
:::

Notez qu'en correspondance multilignes, les ancres `^` et `$` correspondent respectivement au début et à la fin de chaque ligne, au lieu du début et de la fin de la chaîne entière.

Consultez également des exemples de [correct escaping](/manual/appendix/escaping) dans divers contextes.

[comment]: # ({/0b3010e2-439895e1})

[comment]: # ({e9ae4725-e24754dc})
#### Expressions régulières globales

Il existe un éditeur avancé pour créer et tester des expressions régulières complexes dans l'interface Zabbix.

Une fois qu'une expression régulière a été créée de cette manière, elle peut être utilisée à plusieurs endroits dans l'interface en faisant référence à son nom, précédé de @, par exemple, *\@mycustomregexp*.

Pour créer une expression régulière globale :

-   Accédez à : *Administration > Général*
-   Sélectionnez *Expressions régulières* dans la liste déroulante
-   Cliquez sur *Nouvelle expression régulière*

L'onglet **Expressions** permet de définir le nom de l'expression régulière et d'ajouter des sous-expressions.

![](../../assets/en/manual/regular_expressions/global_regexp.png)

Tous les champs obligatoires sont marqués d'un astérisque rouge.

|Paramètre|<|Description|
|-|----------|----------------------------------------|
|*Nom*|<|Définissez le nom de l'expression régulière. Tous les caractères Unicode sont autorisés.|
|*Expressions*|<|Cliquez sur *Ajouter* dans le bloc Expressions pour ajouter une nouvelle sous-expression.|
| |*Type d'expression*|Sélectionnez le type d'expression :<br>**Chaîne de caractères incluse** - correspond à la sous-chaîne<br>**Toute chaîne de caractères incluse** - correspond à n'importe quelle sous-chaîne d'une liste délimitée. La liste délimitée comprend une virgule (,), un point (.) ou une barre oblique (/).<br>**Chaîne de caractères non incluse** - correspond à toute chaîne sauf la sous-chaîne<br>**Le résultat est VRAI** - correspond à l'expression régulière<br>**Le résultat est FAUX** - ne correspond pas à l'expression régulière|
|^|*Expression*|Saisissez la sous-chaîne/l'expression régulière.|
|*Délimiteur*|<|Une virgule (,), un point (.) ou une barre oblique (/) pour séparer les chaînes de texte dans une expression régulière. Ce paramètre est actif uniquement lorsque le type d'expression "*Toute chaîne de caractères incluse*" est sélectionné.|
|*Sensible à la casse*|<|Une case à cocher permettant de spécifier si une expression régulière est sensible à la casse.|

Une barre oblique (/) dans l'expression est interprétée littéralement, et non comme un délimiteur.
Il est ainsi possible d'enregistrer des expressions contenant une barre oblique, sans erreur.

::: noteimportant
Un nom d'expression régulière personnalisée dans Zabbix peut contenir des virgules, des espaces, etc.
Dans les cas où cela pourrait entraîner une mauvaise interprétation lors de la référence (par exemple, une virgule dans le paramètre d'une clé d'élément) la référence entière peut être placée entre guillemets comme ceci : *"\@My custom regexp for purpose1, purpose2"*.<br>
Les noms d'expressions régulières ne doivent pas être placés entre guillemets dans les autres emplacements (par exemple, dans les propriétés d'une règle de découverte bas niveau).
:::

Dans l'onglet **Test**, l'expression régulière et ses sous-expressions peuvent être testées en fournissant une chaîne de test.

![](../../assets/en/manual/regular_expressions/global_regexp_b.png)

Les résultats affichent l'état de chaque sous-expression et l'état total de l'expression personnalisée.

L'état total de l'expression personnalisée est défini comme *Résultat combiné*.
Si plusieurs sous-expressions sont définies, Zabbix utilise l'opérateur logique AND pour calculer le *Résultat combiné*.
Cela signifie que si au moins un Résultat est Faux, le *Résultat combiné* a également l'état Faux.

[comment]: # ({/e9ae4725-e24754dc})

[comment]: # ({5b50aa87-2ea2d961})
#### Expressions régulières globales par défaut

Zabbix est fourni avec plusieurs expressions régulières globales dans son jeu de données par défaut.

|Name|Expression|Matches|
|--|------|------|
|*File systems for discovery*|`^(btrfs|ext2|ext3|ext4|jfs|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|refs|apfs|ntfs|fat32|zfs)$`|"btrfs" ou "ext2" ou "ext3" ou "ext4" ou "jfs" ou "reiser" ou "xfs" ou "ffs" ou "ufs" ou "jfs" ou "jfs2" ou "vxfs" ou "hfs" ou "refs" ou "apfs" ou "ntfs" ou "fat32" ou "zfs"|
|*Network interfaces for discovery*|`^Software Loopback Interface`|Chaînes commençant par "Software Loopback Interface".|
| |`^lo$`|"lo"|
| |`^(In)?[Ll]oop[Bb]ack[0-9._]*$`|Chaînes qui commencent éventuellement par "In", puis contiennent "L" ou "l", puis "oop", puis "B" ou "b", puis "ack", éventuellement suivis d'un nombre quelconque de chiffres, de points ou de traits de soulignement.|
| |`^NULL[0-9.]*$`|Chaînes commençant par "NULL", éventuellement suivies d'un nombre quelconque de chiffres ou de points.|
| |`^[Ll]o[0-9.]*$`|Chaînes commençant par "Lo" ou "lo" et éventuellement suivies d'un nombre quelconque de chiffres ou de points.|
| |`^[Ss]ystem$`|"System" ou "system"|
| |`^Nu[0-9.]*$`|Chaînes commençant par "Nu", éventuellement suivies d'un nombre quelconque de chiffres ou de points.|
|*Storage devices for SNMP discovery*|`^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$`|"Physical memory" ou "Virtual memory" ou "Memory buffers" ou "Cached memory" ou "Swap space"|
|*Windows service names for discovery*|`^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$`|"MMCSS" ou "gupdate" ou "SysmonLog" ou des chaînes comme "clr\_optimization\_v2.0.50727\_32" et "clr\_optimization\_v4.0.30319\_32", où vous pouvez remplacer les points par n'importe quel caractère sauf un saut de ligne.|
|*Windows service startup states for discovery*|`^(automatic|automatic delayed)$`|"automatic" ou "automatic delayed"|

[comment]: # ({/5b50aa87-2ea2d961})

[comment]: # ({4c860844-4c860844})
#### Exemples

[comment]: # ({/4c860844-4c860844})

[comment]: # ({58754c14-eb858ac0})
##### Exemple 1

Utilisation de l'expression suivante dans la découverte de bas niveau pour découvrir
des bases de données, à l'exception d'une base de données portant un nom spécifique :

```default
^TESTDATABASE$
```

![regexp\_expr\_2.png](../../assets/en/manual/regular_expressions/regexp_expr_2.png)

*Type d'expression* choisi : "Le résultat est FALSE".
Ne correspond pas au nom, contenant la chaîne "*TESTDATABASE*".

[comment]: # ({/58754c14-eb858ac0})

[comment]: # ({de20f95d-be96a07d})
##### Exemple avec un modificateur d'expression régulière en ligne

Utilisation de l'expression régulière suivante, incluant un modificateur en ligne (?i), pour faire correspondre les caractères "error" :

```default
(?i)error
```

![regexp\_expr\_3a.png](../../assets/en/manual/regular_expressions/regexp_expr_3a.png)

*Type d'expression* choisi : "Le résultat est TRUE".
Les caractères "error" sont correspondus.

[comment]: # ({/de20f95d-be96a07d})

[comment]: # ({df1d15c8-489130e5})
##### Un autre exemple avec un modificateur regex en ligne

Utilisation de l'expression régulière suivante, incluant plusieurs modificateurs en ligne, pour faire correspondre les caractères après une ligne spécifique :

```default
(?<=match (?i)everything(?-i) after this line\n)(?sx).*# we add s modifier to allow . match newline characters
```

![regexp\_expr\_4\_new.png](../../assets/en/manual/regular_expressions/regexp_expr_4_new.png)

Type d'expression choisi: "Result is TRUE".
Les caractères après une ligne spécifique sont mis en correspondance.

::: noteimportant
Le modificateur **g** ne peut pas être spécifié en ligne.
La liste des modificateurs disponibles se trouve dans la page de manuel [pcresyntax](https://www.pcre.org/original/doc/html/pcresyntax.html#SEC16).
Pour plus d'informations sur la syntaxe PCRE, veuillez consulter la [documentation HTML PCRE](https://www.pcre.org/original/doc/html/pcrepattern.html).

:::

[comment]: # ({/df1d15c8-489130e5})

[comment]: # ({8de7839a-56f9b2c2})
#### Prise en charge des expressions régulières par emplacement

|Emplacement|<|Expression régulière|Expression régulière globale|Correspondance multilignes|Commentaires|
|-|----------|---------|---------|---------|--------------------|
|**[Éléments agent](/manual/config/items/itemtypes/zabbix_agent)**|<|<|<|<|<|
|<|eventlog\[\]|Yes|Yes|Yes|paramètres `regexp`, `severity`, `source`, `eventid`|
|<|eventlog.count\[\]|^|^|^|paramètres `regexp`, `severity`, `source`, `eventid`|
|^|log\[\]|^|^|^|paramètre `regexp`|
|^|log.count\[\]|^|^|^|^|
|^|logrt\[\]|^|Yes/No|^|le paramètre `regexp` prend en charge les deux, le paramètre `file_regexp` prend en charge uniquement les expressions non globales|
|^|logrt.count\[\]|^|^|^|^
|^|proc.cpu.util\[\]|^|No|No|paramètre `cmdline`|
|^|proc.get\[\]|^|^|^|^|
|^|proc.mem\[\]|^|^|^|^|
|^|proc.num\[\]|^|^|^|^|
|^|sensor\[\]|^|^|^|paramètres `device` et `sensor` sur Linux 2.4|
|^|system.hw.macaddr\[\]|^|^|^|paramètre `interface`|
|^|system.sw.packages\[\]|^|^|^|paramètre `regexp`|
|^|system.sw.packages.get\[\]|^|^|^|paramètre `regexp`|
|^|vfs.dir.count\[\]|^|^|^|paramètres `regex_incl`, `regex_excl`, `regex_excl_dir`|
|^|vfs.dir.get\[\]|^|^|^|paramètres `regex_incl`, `regex_excl`, `regex_excl_dir`|
|^|vfs.dir.size\[\]|^|^|^|paramètres `regex_incl`, `regex_excl`, `regex_excl_dir`|
|^|vfs.file.regexp\[\]|^|^|Yes|paramètre `regexp`|
|^|vfs.file.regmatch\[\]|^|^|^|^|
|^|web.page.regexp\[\]|^|^|^|^|
|**[Trappes SNMP](/manual/config/items/itemtypes/snmptrap)**|<|<|<|<|<|
|<|snmptrap\[\]|Yes|Yes|No|paramètre `regexp`|
|**[Prétraitement de la valeur de l'élément](/manual/config/items/item#item-value-preprocessing)**|<|Yes|No|No|paramètre `pattern`|
|**[Fonctions pour les déclencheurs/éléments calculés](/manual/appendix/functions)**|<|<|<|<|<|
|<|count()|Yes|Yes|Yes|paramètre `pattern` si le paramètre `operator` est *regexp* ou *iregexp*|
|<|countunique()|Yes|Yes|^|^|
|<|find()|Yes|Yes|^|^|
|^|logeventid()|Yes|Yes|No|paramètre `pattern`|
|^|logsource()|^|^|^|^|
|**[Découverte de bas niveau](/manual/discovery/low_level_discovery#discovery-rule-filter)**|<|<|<|<|<|
|<|Filtres|Yes|Yes|No|champ *Expression régulière*|
|^|Substitutions|Yes|No|^|dans les options *correspond à*, *ne correspond pas à* pour les conditions *Opération*|
|**[Conditions d'action](/manual/config/notifications/action/conditions)**|<|Yes|No|No|dans les options *correspond à*, *ne correspond pas à* pour les conditions d'autodétection *Nom d'hôte* et *Métadonnées d'hôte*|
|**[Scripts](/manual/web_interface/frontend_sections/alerts/scripts)**|<|Yes|Yes|No|champ *Règle de validation de l'entrée*|
|**[Surveillance web](/manual/web_monitoring#configuring-a-web-scenario)**|<|Yes|No|Yes|*Variables* avec un préfixe **regex:**<br>champ *Chaîne requise*|
|**[Contexte de macro utilisateur](/manual/config/macros/user_macros#user-macro-context)**|<|Yes|No|No|dans le contexte de macro avec un préfixe **regex:**|
|**[Fonctions de macro](/manual/config/macros/macro_functions)**|<|<|<|<|<|
|<|regsub()|Yes|No|No|paramètre `pattern`|
|^|iregsub()|^|^|^|^|
|**[Mappage d'icônes](/manual/web_interface/frontend_sections/administration/general#icon-mapping)**|<|Yes|Yes|No|champ *Expression*|
|**[Mappage des valeurs](/manual/config/items/mapping#configuration)**|<|Yes|No|No|champ *Valeur* si le type de mappage est `regexp`|

[comment]: # ({/8de7839a-56f9b2c2})
