en	# 12 Regular expressions
pt-br	# 12. Expressões regulares

en	#### Overview [Perl Compatible Regular Expressions](https://en.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions) (PCRE, PCRE2) are supported in Zabbix. There are two ways of using regular expressions in Zabbix: - manually entering a regular expression - using a global regular expression created in Zabbix
pt-br	#### Visão geral [Expressões regulares compatíveis com Perl](https://en.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions) (PCRE, PCRE2) são suportadas no Zabbix. Há dois modos de usar expressões regulares no Zabbix: - informando manualmente uma expressão regular - usando uma expressão regular global criada no Zabbix

en	#### Regular expressions You may manually enter a regular expression in supported places. Note that the expression may not start with @ because that symbol is used in Zabbix for referencing global regular expressions. ::: notewarning It's possible to run out of stack when using regular expressions. See the [pcrestack man page](http://pcre.org/original/doc/html/pcrestack.html) for more information. ::: Note that in multiline matching, the `^` and `$` anchors match at the beginning/end of each line respectively, instead of the beginning/end of the entire string. See also examples for [correct escaping](/manual/appendix/escaping) in various contexts.
pt-br	#### Expressões regulares Você pode inserir manualmente uma expressão regular nos locais suportados. Observe que a expressão não pode começar com @ porque esse símbolo é usado no Zabbix para referenciar expressões regulares globais. ::: notewarning É possível ficar sem pilha ao usar expressões regulares. Consulte a [página do manual do pcrestack](http://pcre.org/original/doc/html/pcrestack.html) para obter mais informações. ::: Observe que, na correspondência multilinha, os delimitadores `^` e `$` correspondem ao início/fim de cada linha, respectivamente, em vez do início/fim de toda a string. Veja também exemplos de [escape correto](/manual/appendix/escaping) em vários contextos.

en	#### Global regular expressions There is an advanced editor for creating and testing complex regular expressions in Zabbix frontend. Once a regular expression has been created this way, it can be used in several places in the frontend by referring to its name, prefixed with @, for example, *\@mycustomregexp*. To create a global regular expression: - Go to: *Administration → General* - Select *Regular expressions* from the dropdown - Click on *New regular expression* The **Expressions** tab allows to set the regular expression name and add subexpressions. ![](../../assets/en/manual/regular_expressions/global_regexp.png) All mandatory input fields are marked with a red asterisk. |Parameter|<|Description| |-|----------|----------------------------------------| |*Name*|<|Set the regular expression name. Any Unicode characters are allowed.| |*Expressions*|<|Click on *Add* in the Expressions block to add a new subexpression.| | |*Expression type*|Select expression type:<br>**Character string included** - match the substring<br>**Any character string included** - match any substring from a delimited list. The delimited list includes a comma (,), a dot (.) or a forward slash (/).<br>**Character string not included** - match any string except the substring<br>**Result is TRUE** - match the regular expression<br>**Result is FALSE** - do not match the regular expression| |^|*Expression*|Enter substring/regular expression.| |*Delimiter*|<|A comma (,), a dot (.) or a forward slash (/) to separate text strings in a regular expression. This parameter is active only when "*Any character string included*" expression type is selected.| |*Case sensitive*|<|A checkbox to specify whether a regular expression is sensitive to capitalization of letters.| A forward slash (/) in the expression is treated literally, rather than a delimiter. This way it is possible to save expressions containing a slash, without errors. ::: noteimportant A custom regular expression name in Zabbix may contain commas, spaces, etc. In those cases where that may lead to misinterpretation when referencing (for example, a comma in the parameter of an item key) the whole reference may be put in quotes like this: *"\@My custom regexp for purpose1, purpose2"*.\ Regular expression names must not be quoted in other locations (for example, in LLD rule properties). ::: In the **Test** tab the regular expression and its subexpressions can be tested by providing a test string. ![](../../assets/en/manual/regular_expressions/global_regexp_b.png) Results show the status of each subexpression and total custom expression status. Total custom expression status is defined as *Combined result*. If several sub expressions are defined Zabbix uses AND logical operator to calculate *Combined result*. It means that if at least one Result is False *Combined result* has also False status.
pt-br	#### Expressões regulares globais Existe um editor avançado para criar e testar expressões regulares complexas no frontend do Zabbix. Depois que uma expressão regular for criada dessa forma, ela poderá ser usada em vários locais do frontend, referenciando seu nome, prefixado com @, por exemplo, *\@minhaexpressaoregular*. Para criar uma expressão regular global: - Vá para: *Administração → Geral* - Selecione *Expressões regulares* no menu suspenso - Clique em *Nova expressão regular* A aba **Expressões** permite definir o nome da expressão regular e adicionar subexpressões. ![](../../assets/en/manual/regular_expressions/global_regexp.png) Todos os campos obrigatórios estão marcados com um asterisco vermelho. |Parâmetro|<|Descrição| |-|----------|----------------------------------------| |*Nome*|<|Defina o nome da expressão regular. Qualquer caractere Unicode é permitido.| |*Expressões*|<|Clique em *Adicionar* no bloco Expressões para adicionar uma nova subexpressão.| | |*Tipo de expressão*|Selecione o tipo de expressão:<br>**String de caracteres incluída** - corresponde à substring<br>**Qualquer string de caracteres incluída** - corresponde a qualquer substring de uma lista delimitada. A lista delimitada inclui uma vírgula (,), um ponto (.) ou uma barra (/).<br>**String de caracteres não incluída** - corresponde a qualquer string, exceto a substring<br>**Resultado é VERDADEIRO** - corresponde à expressão regular<br>**Resultado é FALSO** - não corresponde à expressão regular| |^|*Expressão*|Digite a substring/expressão regular.| |*Delimitador*|<|Uma vírgula (,), um ponto (.) ou uma barra (/) para separar strings de texto em uma expressão regular. Este parâmetro só fica ativo quando o tipo de expressão "*Qualquer string de caracteres incluída*" é selecionado.| |*Diferenciar maiúsculas de minúsculas*|<|Uma caixa de seleção para especificar se uma expressão regular diferencia maiúsculas de minúsculas.| Uma barra (/) na expressão é tratada literalmente, e não como um delimitador. Dessa forma, é possível salvar expressões contendo uma barra, sem erros. ::: noteimportant Um nome de expressão regular personalizada no Zabbix pode conter vírgulas, espaços, etc. Nos casos em que isso possa levar a uma má interpretação ao referenciar (por exemplo, uma vírgula no parâmetro de uma chave de item), toda a referência pode ser colocada entre aspas assim: *"\@Minha expressão regular personalizada para propósito1, propósito2"*.\ Os nomes das expressões regulares não devem ser colocados entre aspas em outros locais (por exemplo, nas propriedades da regra LLD). ::: Na aba **Testar**, a expressão regular e suas subexpressões podem ser testadas fornecendo uma string de teste. ![](../../assets/en/manual/regular_expressions/global_regexp_b.png) Os resultados mostram o status de cada subexpressão e o status total da expressão personalizada. O status total da expressão personalizada é definido como *Resultado combinado*. Se várias subexpressões forem definidas, o Zabbix usa o operador lógico AND para calcular o *Resultado combinado*. Isso significa que, se pelo menos um Resultado for Falso, o *Resultado combinado* também terá o status Falso.

en	#### Default global regular expressions Zabbix comes with several global regular expression in its default dataset. |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" or "ext2" or "ext3" or "ext4" or "jfs" or "reiser" or "xfs" or "ffs" or "ufs" or "jfs" or "jfs2" or "vxfs" or "hfs" or "refs" or "apfs" or "ntfs" or "fat32" or "zfs"| |*Network interfaces for discovery*|`^Software Loopback Interface`|Strings starting with "Software Loopback Interface".| | |`^lo$`|"lo"| | |`^(In)?[Ll]oop[Bb]ack[0-9._]*$`|Strings that optionally start with "In", then have "L" or "l", then "oop", then "B" or "b", then "ack", which can be optionally followed by any number of digits, dots or underscores.| | |`^NULL[0-9.]*$`|Strings starting with "NULL" optionally followed by any number of digits or dots.| | |`^[Ll]o[0-9.]*$`|Strings starting with "Lo" or "lo" and optionally followed by any number of digits or dots.| | |`^[Ss]ystem$`|"System" or "system"| | |`^Nu[0-9.]*$`|Strings starting with "Nu" optionally followed by any number of digits or dots.| |*Storage devices for SNMP discovery*|`^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$`|"Physical memory" or "Virtual memory" or "Memory buffers" or "Cached memory" or "Swap space"| |*Windows service names for discovery*|`^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$`|"MMCSS" or "gupdate" or "SysmonLog" or strings like "clr\_optimization\_v2.0.50727\_32" and "clr\_optimization\_v4.0.30319\_32" where instead of dots you can put any character except newline.| |*Windows service startup states for discovery*|`^(automatic|automatic delayed)$`|"automatic" or "automatic delayed"|
pt-br	#### Expressões regulares globais padrão O Zabbix vem com várias expressões regulares globais em seu conjunto de dados padrão. |Nome|Expressão|Corresponde| |--|------|------| |*Sistemas de arquivos para descoberta*|`^(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"| |*Interfaces de rede para descoberta*|`^Software Loopback Interface`|Strings começando com "Software Loopback Interface".| | |`^lo$`|"lo"| | |`^(In)?[Ll]oop[Bb]ack[0-9._]*$`|Strings que opcionalmente começam com "In", depois têm "L" ou "l", depois "oop", depois "B" ou "b", depois "ack", que podem ser seguidas opcionalmente por qualquer número de dígitos, pontos ou sublinhados.| | |`^NULL[0-9.]*$`|Strings começando com "NULL" seguidas opcionalmente por qualquer número de dígitos ou pontos.| | |`^[Ll]o[0-9.]*$`|Strings começando com "Lo" ou "lo" e opcionalmente seguidas por qualquer número de dígitos ou pontos.| | |`^[Ss]ystem$`|"System" ou "system"| | |`^Nu[0-9.]*$`|Strings começando com "Nu" seguidas opcionalmente por qualquer número de dígitos ou pontos.| |*Dispositivos de armazenamento para descoberta SNMP*|`^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$`|"Physical memory" ou "Virtual memory" ou "Memory buffers" ou "Cached memory" ou "Swap space"| |*Nomes de serviços do Windows para descoberta*|`^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$`|"MMCSS" ou "gupdate" ou "SysmonLog" ou strings como "clr\_optimization\_v2.0.50727\_32" e "clr\_optimization\_v4.0.30319\_32" onde, em vez de pontos, você pode colocar qualquer caractere, exceto nova linha.| |*Estados de inicialização de serviços do Windows para descoberta*|`^(automatic|automatic delayed)$`|"automatic" ou "automatic delayed"|

en	#### Examples
pt-br	#### Exemplos

en	##### Example 1 Use of the following expression in low-level discovery to discover databases except a database with a specific name: ^TESTDATABASE$ ![regexp\_expr\_2.png](../../assets/en/manual/regular_expressions/regexp_expr_2.png) Chosen *Expression type*: "Result is FALSE". Doesn't match name, containing string "*TESTDATABASE*".
pt-br	##### Exemplo 1 Uso da seguinte expressão em descoberta de baixo-nível para descobrir bancos de dados, exceto um banco de dados com um nome específico: ^TESTDATABASE$ ![regexp\_expr\_2.png](../../assets/en/manual/regular_expressions/regexp_expr_2.png) *Tipo de expressão* escolhido: "Resultado é FALSO". Não corresponde ao nome, contendo string "*TESTDATABASE*".

en	##### Example with an inline regex modifier Use of the following regular expression including an inline modifier (?i) to match the characters "error": (?i)error ![regexp\_expr\_3a.png](../../assets/en/manual/regular_expressions/regexp_expr_3a.png) Chosen *Expression type*: "Result is TRUE". Characters "error" are matched.
pt-br	##### Exemplo com um modificador regex em linha Uso da seguinte expressão regular incluindo um modificador em linha (?i) para corresponder os caracteres "erro": (?i)erro ![regexp\_expr\_3a.png](../../assets/en/manual/regular_expressions/regexp_expr_3a.png) *Tipo de expressão* escolhido: "Resultado é VERDADEIRO". Os caracteres "erro" são correspondidos.

en	##### Another example with an inline regex modifier Use of the following regular expression including multiple inline modifiers to match the characters after a specific line: (?<=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) Chosen Expression type: "Result is TRUE". Characters after a specific line are matched. ::: noteimportant **g** modifier can't be specified in line. The list of available modifiers can be found in [pcresyntax man page](https://www.pcre.org/original/doc/html/pcresyntax.html#SEC16). For more information about PCRE syntax please refer to [PCRE HTML documentation](https://www.pcre.org/original/doc/html/pcrepattern.html). :::
pt-br	##### Outro exemplo com um modificador regex em linha Uso da seguinte expressão regular incluindo múltiplos modificadores em linha para corresponder aos caracteres após uma linha específica: (?<=testar (?i)tudo(?-i) apos esta linha\n)(?sx).*# nós adicionamos o modificador s para permitir . corresponder a caracteres de nova linha ![regexp\_expr\_4\_new.png](../../assets/en/manual/regular_expressions/regexp_expr_4_new.png) *Tipo de expressão* escolhido: "Resultado é VERDADEIRO". Os caracteres após uma linha específica são correspondidos. ::: noteimportant O modificador **g** não pode ser especificado em linha. A lista de modificadores disponíveis pode ser encontrada na [página de manual pcresyntax](https://www.pcre.org/original/doc/html/pcresyntax.html#SEC16). Para mais informações sobre a sintaxe PCRE, por favor consulte a [documentação HTML PCRE](https://www.pcre.org/original/doc/html/pcrepattern.html). :::

en	#### Regular expression support by location |Location|<|Regular expression|Global regular expression|Multiline matching|Comments| |-|----------|---------|---------|---------|--------------------| |**[Agent items](/manual/config/items/itemtypes/zabbix_agent)**|<|<|<|<|<| |<|eventlog\[\]|Yes|Yes|Yes|`regexp`, `severity`, `source`, `eventid` parameters| |<|eventlog.count\[\]|^|^|^|`regexp`, `severity`, `source`, `eventid` parameters| |^|log\[\]|^|^|^|`regexp` parameter| |^|log.count\[\]|^|^|^|^| |^|logrt\[\]|^|Yes/No|^|`regexp` parameter supports both, `file_regexp` parameter supports non-global expressions only| |^|logrt.count\[\]|^|^|^|^ |^|proc.cpu.util\[\]|^|No|No|`cmdline` parameter| |^|proc.get\[\]|^|^|^|^| |^|proc.mem\[\]|^|^|^|^| |^|proc.num\[\]|^|^|^|^| |^|sensor\[\]|^|^|^|`device` and `sensor` parameters on Linux 2.4| |^|system.hw.macaddr\[\]|^|^|^|`interface` parameter| |^|system.sw.packages\[\]|^|^|^|`regexp` parameter| |^|system.sw.packages.get\[\]|^|^|^|`regexp` parameter| |^|vfs.dir.count\[\]|^|^|^|`regex_incl`, `regex_excl`, `regex_excl_dir` parameters| |^|vfs.dir.get\[\]|^|^|^|`regex_incl`, `regex_excl`, `regex_excl_dir` parameters| |^|vfs.dir.size\[\]|^|^|^|`regex_incl`, `regex_excl`, `regex_excl_dir` parameters| |^|vfs.file.regexp\[\]|^|^|Yes|`regexp` parameter| |^|vfs.file.regmatch\[\]|^|^|^|^| |^|web.page.regexp\[\]|^|^|^|^| |**[SNMP traps](/manual/config/items/itemtypes/snmptrap)**|<|<|<|<|<| |<|snmptrap\[\]|Yes|Yes|No|`regexp` parameter| |**[Item value preprocessing](/manual/config/items/item#item_value_preprocessing)**|<|Yes|No|No|`pattern` parameter| |**[Functions for triggers/calculated items](/manual/appendix/functions)**|<|<|<|<|<| |<|count()|Yes|Yes|Yes|`pattern` parameter if `operator` parameter is *regexp* or *iregexp*| |<|countunique()|Yes|Yes|^|^| |<|find()|Yes|Yes|^|^| |^|logeventid()|Yes|Yes|No|`pattern` parameter| |^|logsource()|^|^|^|^| |**[Low-level discovery](/manual/discovery/low_level_discovery#discovery_rule_filter)**|<|<|<|<|<| |<|Filters|Yes|Yes|No|*Regular expression* field| |^|Overrides|Yes|No|^|In *matches*, *does not match* options for *Operation* conditions| |**[Action conditions](/manual/config/notifications/action/conditions)**|<|Yes|No|No|In *matches*, *does not match* options for *Host name* and *Host metadata* autoregistration conditions| |**[Scripts](/manual/web_interface/frontend_sections/alerts/scripts)**|<|Yes|Yes|No|*Input validation rule* field| |**[Web monitoring](/manual/web_monitoring#configuring_a_web_scenario)**|<|Yes|No|Yes|*Variables* with a **regex:** prefix<br>*Required string* field| |**[User macro context](/manual/config/macros/user_macros#user_macro_context)**|<|Yes|No|No|In macro context with a **regex:** prefix| |**[Macro functions](/manual/config/macros/macro_functions)**|<|<|<|<|<| |<|regsub()|Yes|No|No|`pattern` parameter| |^|iregsub()|^|^|^|^| |**[Link indicators in maps](/manual/config/visualization/maps/map#linking-elements)**|<|Yes|No|No|*Pattern* field (for text items)| |**[Icon mapping](/manual/web_interface/frontend_sections/administration/general#icon_mapping)**|<|Yes|Yes|No|*Expression* field| |**[Value mapping](/manual/config/items/mapping#configuration)**|<|Yes|No|No|*Value* field if mapping type is `regexp`|
pt-br	#### Suporte a expressões regulares por local |Localização|<|Expressão regular|Expressão regular global|Correspondência multilinha|Comentários| |-|----------|---------|---------|---------|--------------------| |**[Itens de agent](/manual/config/items/itemtypes/zabbix_agent)**|<|<|<|<|<| |<|eventlog\[\]|Sim|Sim|Sim|parâmetros `regexp`, `severity`, `source`, `eventid`| |<|eventlog.count\[\]|^|^|^|parâmetros `regexp`, `severity`, `source`, `eventid`| |^|log\[\]|^|^|^|parâmetro `regexp`| |^|log.count\[\]|^|^|^|^| |^|logrt\[\]|^|Sim/Não|^|o parâmetro `regexp` suporta ambos, o parâmetro `file_regexp` suporta apenas expressões não globais| |^|logrt.count\[\]|^|^|^|^ |^|proc.cpu.util\[\]|^|Não|Não|parâmetro `cmdline`| |^|proc.get\[\]|^|^|^|^| |^|proc.mem\[\]|^|^|^|^| |^|proc.num\[\]|^|^|^|^| |^|sensor\[\]|^|^|^|parâmetros `device` e `sensor` no Linux 2.4| |^|system.hw.macaddr\[\]|^|^|^|parâmetro `interface`| |^|system.sw.packages\[\]|^|^|^|parâmetro `regexp`| |^|system.sw.packages.get\[\]|^|^|^|parâmetro `regexp`| |^|vfs.dir.count\[\]|^|^|^|parâmetros `regex_incl`, `regex_excl`, `regex_excl_dir`| |^|vfs.dir.get\[\]|^|^|^|parâmetros `regex_incl`, `regex_excl`, `regex_excl_dir`| |^|vfs.dir.size\[\]|^|^|^|parâmetros `regex_incl`, `regex_excl`, `regex_excl_dir`| |^|vfs.file.regexp\[\]|^|^|Sim|parâmetro `regexp`| |^|vfs.file.regmatch\[\]|^|^|^|^| |^|web.page.regexp\[\]|^|^|^|^| |**[Traps SNMP](/manual/config/items/itemtypes/snmptrap)**|<|<|<|<|<| |<|snmptrap\[\]|Sim|Sim|Não|parâmetro `regexp`| |**[Pré-processamento de valor de item](/manual/config/items/item#item_value_preprocessing)**|<|Sim|Não|Não|parâmetro `pattern`| |**[Funções para triggers/itens calculados](/manual/appendix/functions)**|<|<|<|<|<| |<|count()|Sim|Sim|Sim|parâmetro `pattern` se o parâmetro `operator` for *regexp* ou *iregexp*| |<|countunique()|Sim|Sim|^|^| |<|find()|Sim|Sim|^|^| |^|logeventid()|Sim|Sim|Não|parâmetro `pattern`| |^|logsource()|^|^|^|^| |**[Descoberta de baixo nível](/manual/discovery/low_level_discovery#discovery_rule_filter)**|<|<|<|<|<| |<|Filtros|Sim|Sim|Não|campo *Expressão regular*| |^|Substituições|Sim|Não|^|Nas opções *corresponde*, *não corresponde* para condições de *Operação*| |**[Condições de ação](/manual/config/notifications/action/conditions)**|<|Sim|Não|Não|Nas opções *corresponde*, *não corresponde* para condições de autoregistro *Nome do host* e *Metadados do host*| |**[Scripts](/manual/web_interface/frontend_sections/alerts/scripts)**|<|Sim|Sim|Não|campo *Regra de validação de entrada*| |**[Monitoramento web](/manual/web_monitoring#configuring_a_web_scenario)**|<|Sim|Não|Sim|*Variáveis* com prefixo **regex:**<br>campo *String obrigatória*| |**[Contexto de macro de usuário](/manual/config/macros/user_macros#user_macro_context)**|<|Sim|Não|Não|No contexto da macro com prefixo **regex:**| |**[Funções de macro](/manual/config/macros/macro_functions)**|<|<|<|<|<| |<|regsub()|Sim|Não|Não|parâmetro `pattern`| |^|iregsub()|^|^|^|^| |**[Indicadores de link em mapas](/manual/config/visualization/maps/map#linking-elements)**|<|Sim|Não|Não|campo *Padrão* (para itens de texto)| |**[Mapeamento de ícones](/manual/web_interface/frontend_sections/administration/general#icon_mapping)**|<|Sim|Sim|Não|campo *Expressão*| |**[Mapeamento de valores](/manual/config/items/mapping#configuration)**|<|Sim|Não|Não|campo *Valor* se o tipo de mapeamento for `regexp`|