[comment]: # (tags: regular expression, regex )

[comment]: # ({4151d28b-4151d28b})
# 12 Regulārās izteiksmes

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

[comment]: # ({091ac9cf-17ed5ab5})
#### Pārskats

[Perl Compatible Regular Expressions](https://en.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions) (PCRE, PCRE2) tiek atbalstītas Zabbix.

Zabbix regulārās izteiksmes var izmantot divos veidos:

-   manuāli ievadot regulāro izteiksmi
-   izmantojot globālo regulāro izteiksmi, kas izveidota Zabbix

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

[comment]: # ({5335a809-439895e1})
#### Regulārās izteiksmes

Atbalstītajās vietās varat manuāli ievadīt regulāro izteiksmi.
Ņemiet vērā, ka izteiksme nedrīkst sākties ar @, jo šis simbols Zabbix tiek izmantots globālo regulāro izteiksmju atsaucēm.

::: notewarning
Izmantojot regulārās izteiksmes, var beigties steks.
Plašāku informāciju skatiet [pcrestack man lapā](http://pcre.org/original/doc/html/pcrestack.html).
:::

Ņemiet vērā, ka vairākrindu atbilstības gadījumā enkuri `^` un `$` atbilst attiecīgi katras rindas sākumam/beigām, nevis visas virknes sākumam/beigām.

Skatiet arī piemērus par [pareizu atsoļošanu](/manual/appendix/escaping) dažādos kontekstos.

[comment]: # ({/5335a809-439895e1})

[comment]: # ({e9ae4725-e24754dc})
#### Globālas regulārās izteiksmes

Zabbix lietotāja saskarnē ir pieejams paplašināts redaktors sarežģītu regulāro izteiksmju izveidei un testēšanai.

Kad regulārā izteiksme ir izveidota šādā veidā, to var izmantot vairākās lietotāja saskarnes vietās, atsaucoties uz tās nosaukumu ar prefiksu @, piemēram, *\@mycustomregexp*.

Lai izveidotu globālu regulāro izteiksmi:

-   Dodieties uz: *Administration > General*
-   Nolaižamajā sarakstā atlasiet *Regular expressions*
-   Noklikšķiniet uz *New regular expression*

Cilne **Expressions** ļauj iestatīt regulārās izteiksmes nosaukumu un pievienot apakšizteiksmes.

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

Visi obligātie ievades lauki ir atzīmēti ar sarkanu zvaigznīti.

|Parameter|<|Description|
|-|----------|----------------------------------------|
|*Name*|<|Iestatiet regulārās izteiksmes nosaukumu. Ir atļautas jebkādas Unicode rakstzīmes.|
|*Expressions*|<|Noklikšķiniet uz *Add* blokā Expressions, lai pievienotu jaunu apakšizteiksmi.|
| |*Expression type*|Atlasiet izteiksmes tipu:<br>**Character string included** - atbilst apakšvirknei<br>**Any character string included** - atbilst jebkurai apakšvirknei no norobežota saraksta. Norobežotajā sarakstā ietilpst komats (,), punkts (.) vai slīpsvītra (/).<br>**Character string not included** - atbilst jebkurai virknei, izņemot apakšvirkni<br>**Result is TRUE** - atbilst regulārajai izteiksmei<br>**Result is FALSE** - neatbilst regulārajai izteiksmei|
|^|*Expression*|Ievadiet apakšvirkni/regulāro izteiksmi.|
|*Delimiter*|<|Komats (,), punkts (.) vai slīpsvītra (/), lai atdalītu teksta virknes regulārajā izteiksmē. Šis parametrs ir aktīvs tikai tad, ja ir atlasīts izteiksmes tips "*Any character string included*".|
|*Case sensitive*|<|Atzīmes rūtiņa, lai norādītu, vai regulārā izteiksme ir jutīga pret burtu reģistru.|

Slīpsvītra (/) izteiksmē tiek apstrādāta burtiski, nevis kā norobežotājs.
Tādējādi ir iespējams saglabāt izteiksmes, kas satur slīpsvītru, bez kļūdām.

::: noteimportant
Pielāgotas regulārās izteiksmes nosaukums Zabbix var saturēt komatus, atstarpes u. c.
Tajos gadījumos, kad tas var novest pie nepareizas interpretācijas, veicot atsauci (piemēram, komats vienuma atslēgas parametrā), visu atsauci var ievietot pēdiņās šādi: *"\@My custom regexp for purpose1, purpose2"*.<br>
Citās vietās regulāro izteiksmju nosaukumus pēdiņās neliek (piemēram, LLD noteikuma īpašībās).
:::

Cilnē **Test** regulāro izteiksmi un tās apakšizteiksmes var testēt, ievadot testa virkni.

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

Rezultātos tiek parādīts katras apakšizteiksmes statuss un kopējais pielāgotās izteiksmes statuss.

Kopējais pielāgotās izteiksmes statuss tiek definēts kā *Combined result*.
Ja ir definētas vairākas apakšizteiksmes, Zabbix izmanto loģisko operatoru AND, lai aprēķinātu *Combined result*.
Tas nozīmē, ka, ja vismaz vienam Result ir False, arī *Combined result* statuss būs False.

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

[comment]: # ({5b50aa87-2ea2d961})
#### Noklusējuma globālie regulārie izteicieni

Zabbix komplektā ir iekļauti vairāki globālie regulārie izteicieni tā noklusējuma datu kopā.

|Name|Expression|Matches|
|--|------|------|
|*Failu sistēmas atklāšanai*|`^(btrfs|ext2|ext3|ext4|jfs|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|refs|apfs|ntfs|fat32|zfs)$`|"btrfs" vai "ext2" vai "ext3" vai "ext4" vai "jfs" vai "reiser" vai "xfs" vai "ffs" vai "ufs" vai "jfs" vai "jfs2" vai "vxfs" vai "hfs" vai "refs" vai "apfs" vai "ntfs" vai "fat32" vai "zfs"|
|*Tīkla saskarnes atklāšanai*|`^Software Loopback Interface`|Virknes, kas sākas ar "Software Loopback Interface".|
| |`^lo$`|"lo"|
| |`^(In)?[Ll]oop[Bb]ack[0-9._]*$`|Virknes, kas pēc izvēles sākas ar "In", pēc tam satur "L" vai "l", tad "oop", pēc tam "B" vai "b", tad "ack", kam pēc izvēles var sekot jebkurš ciparu, punktu vai pasvītrojumu skaits.|
| |`^NULL[0-9.]*$`|Virknes, kas sākas ar "NULL", kam pēc izvēles var sekot jebkurš ciparu vai punktu skaits.|
| |`^[Ll]o[0-9.]*$`|Virknes, kas sākas ar "Lo" vai "lo" un kam pēc izvēles var sekot jebkurš ciparu vai punktu skaits.|
| |`^[Ss]ystem$`|"System" vai "system"|
| |`^Nu[0-9.]*$`|Virknes, kas sākas ar "Nu", kam pēc izvēles var sekot jebkurš ciparu vai punktu skaits.|
|*Krātuves ierīces SNMP atklāšanai*|`^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$`|"Physical memory" vai "Virtual memory" vai "Memory buffers" vai "Cached memory" vai "Swap space"|
|*Windows pakalpojumu nosaukumi atklāšanai*|`^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$`|"MMCSS" vai "gupdate" vai "SysmonLog" vai virknes, piemēram, "clr\_optimization\_v2.0.50727\_32" un "clr\_optimization\_v4.0.30319\_32", kur punktu vietā var ievietot jebkuru rakstzīmi, izņemot jaunu rindu.|
|*Windows pakalpojumu startēšanas stāvokļi atklāšanai*|`^(automatic|automatic delayed)$`|"automatic" vai "automatic delayed"|

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

[comment]: # ({4c860844-4c860844})
#### Piemēri

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

[comment]: # ({58754c14-eb858ac0})
##### Piemērs 1

Tālāk norādītās izteiksmes izmantošana zemā līmeņa atklāšanā, lai atklātu
datubāzes, izņemot datubāzi ar noteiktu nosaukumu:

```default
^TESTDATABASE$
```

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

Izvēlētais *izteiksmes tips*: "Rezultāts ir FALSE".
Neatbilst nosaukumam, kas satur virkni "*TESTDATABASE*".

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

[comment]: # ({de20f95d-be96a07d})
##### Piemērs ar iekļautu regulārās izteiksmes modifikatoru

Tālāk norādītās regulārās izteiksmes izmantošana, iekļaujot iekļautu modifikatoru (?i), lai atbilstu rakstzīmēm "error":

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

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

Izvēlētais *Expression type*: "Result is TRUE".
Rakstzīmes "error" tiek atrastas.

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

[comment]: # ({df1d15c8-489130e5})
##### Vēl viens piemērs ar iekļautu regulārās izteiksmes modifikatoru

Tālāk norādītās regulārās izteiksmes izmantošana, iekļaujot vairākus iekļautos modifikatorus, lai atrastu rakstzīmes aiz noteiktas rindas:

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

Izvēlētais izteiksmes tips: "Result is TRUE".
Rakstzīmes aiz noteiktas rindas tiek atrastas.

::: noteimportant
**g** modifikatoru nevar norādīt rindā.
Pieejamo modifikatoru sarakstu var atrast [pcresyntax man page](https://www.pcre.org/original/doc/html/pcresyntax.html#SEC16).
Plašāku informāciju par PCRE sintaksi skatiet [PCRE HTML documentation](https://www.pcre.org/original/doc/html/pcrepattern.html).

:::

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

[comment]: # ({cba989e9-56f9b2c2})
#### Regulārās izteiksmes atbalsts pēc atrašanās vietas

|Atrašanās vieta|<|Regulārā izteiksme|Globālā regulārā izteiksme|Vairākrindu atbilstība|Komentāri|
|-|----------|---------|---------|---------|--------------------|
|**[Aģenta vienumi](/manual/config/items/itemtypes/zabbix_agent)**|<|<|<|<|<|
|<|eventlog\[\]|Yes|Yes|Yes|`regexp`, `severity`, `source`, `eventid` parametri|
|<|eventlog.count\[\]|^|^|^|`regexp`, `severity`, `source`, `eventid` parametri|
|^|log\[\]|^|^|^|`regexp` parametrs|
|^|log.count\[\]|^|^|^|^|
|^|logrt\[\]|^|Yes/No|^|`regexp` parametrs atbalsta abus, `file_regexp` parametrs atbalsta tikai neglobālās izteiksmes|
|^|logrt.count\[\]|^|^|^|^
|^|proc.cpu.util\[\]|^|No|No|`cmdline` parametrs|
|^|proc.get\[\]|^|^|^|^|
|^|proc.mem\[\]|^|^|^|^|
|^|proc.num\[\]|^|^|^|^|
|^|sensor\[\]|^|^|^|`device` un `sensor` parametri Linux 2.4|
|^|system.hw.macaddr\[\]|^|^|^|`interface` parametrs|
|^|system.sw.packages\[\]|^|^|^|`regexp` parametrs|
|^|system.sw.packages.get\[\]|^|^|^|`regexp` parametrs|
|^|vfs.dir.count\[\]|^|^|^|`regex_incl`, `regex_excl`, `regex_excl_dir` parametri|
|^|vfs.dir.get\[\]|^|^|^|`regex_incl`, `regex_excl`, `regex_excl_dir` parametri|
|^|vfs.dir.size\[\]|^|^|^|`regex_incl`, `regex_excl`, `regex_excl_dir` parametri|
|^|vfs.file.regexp\[\]|^|^|Yes|`regexp` parametrs|
|^|vfs.file.regmatch\[\]|^|^|^|^|
|^|web.page.regexp\[\]|^|^|^|^|
|**[SNMP slazdi](/manual/config/items/itemtypes/snmptrap)**|<|<|<|<|<|
|<|snmptrap\[\]|Yes|Yes|No|`regexp` parametrs|
|**[Vienuma vērtības pirmapstrāde](/manual/config/items/item#item-value-preprocessing)**|<|Yes|No|No|`pattern` parametrs|
|**[Funkcijas trigeriem/ aprēķinātajiem vienumiem](/manual/appendix/functions)**|<|<|<|<|<|
|<|count()|Yes|Yes|Yes|`pattern` parametrs, ja `operator` parametrs ir *regexp* vai *iregexp*|
|<|countunique()|Yes|Yes|^|^|
|<|find()|Yes|Yes|^|^|
|^|logeventid()|Yes|Yes|No|`pattern` parametrs|
|^|logsource()|^|^|^|^|
|**[Zema līmeņa atklāšana](/manual/discovery/low_level_discovery#discovery-rule-filter)**|<|<|<|<|<|
|<|Filtri|Yes|Yes|No|Lauks *Regular expression*|
|^|Pārrakstīšanas|Yes|No|^|Opcijās *matches*, *does not match* nosacījumiem *Operation*|
|**[Darbību nosacījumi](/manual/config/notifications/action/conditions)**|<|Yes|No|No|Opcijās *matches*, *does not match* automātiskās reģistrācijas nosacījumiem *Host name* un *Host metadata*|
|**[Skripti](/manual/web_interface/frontend_sections/alerts/scripts)**|<|Yes|Yes|No|Lauks *Input validation rule*|
|**[Tīmekļa uzraudzība](/manual/web_monitoring#configuring-a-web-scenario)**|<|Yes|No|Yes|*Variables* ar prefiksu **regex:**<br>Lauks *Required string*|
|**[Lietotāja makro konteksts](/manual/config/macros/user_macros#user-macro-context)**|<|Yes|No|No|Makro kontekstā ar prefiksu **regex:**|
|**[Makro funkcijas](/manual/config/macros/macro_functions)**|<|<|<|<|<|
|<|regsub()|Yes|No|No|`pattern` parametrs|
|^|iregsub()|^|^|^|^|
|**[Saišu indikatori kartēs](/manual/config/visualization/maps/map#linking-elements)**|<|Yes|No|No|Lauks *Pattern* (teksta vienumiem)|
|**[Ikonu kartēšana](/manual/web_interface/frontend_sections/administration/general#icon-mapping)**|<|Yes|Yes|No|Lauks *Expression*|
|**[Vērtību kartēšana](/manual/config/items/mapping#configuration)**|<|Yes|No|No|Lauks *Value*, ja kartēšanas tips ir `regexp`|

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