pregMatch
Junta todas as ocorrências de uma expressão regular.
Sintaxe
Seção intitulada “Sintaxe”table pregMatch ( string texto, string padrao [, int/string flags = 0, int maxResultados = 100000 ] )Parâmetros
Seção intitulada “Parâmetros”| Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
texto | string | — | Texto onde procurar. Um número vira texto. |
padrao | string | — | Expressão regular. |
flags | int ou string | 0 | Opções de busca — veja abaixo. |
maxResultados | int | 100000 | Para depois de tantas ocorrências. |
O argumento flags é um número — a soma dos bits abaixo — ou uma string com as letras:
| Letra | Bit | Efeito |
|---|---|---|
i | 1 | Não diferencia maiúsculas de minúsculas. |
m | 2 | Multilinha: ^ e $ também casam nas quebras de linha. |
d | 4 | Dot-all: . também casa com uma quebra de linha. |
e | 8 | Estendido: espaços e comentários # dentro do padrão são ignorados. |
u | 16 | UTF-8: padrão e texto são lidos como UTF-8, e \w, \d e afins seguem o Unicode. |
Uma string com qualquer outra letra registra Bad usage @ '<função>' [Flags all wrong] e a chamada devolve false; um número negativo também. Qualquer outro tipo — nil, um booleano — significa sem flags.
maxResultados só é lido depois de flags: pregMatch(t, p, 5) toma o 5 como flags, e pregMatch(t, p, nil, 5) ignora o 5. Passe as flags explicitamente — 0 para nenhuma — quando quiser um limite.
Retorno
Seção intitulada “Retorno”Uma tabela com uma string por ocorrência, em ordem. Quando o padrão tem grupos de captura, cada entrada é o que o primeiro grupo capturou (uma string vazia se esse grupo não participou da ocorrência); sem grupos, é a ocorrência inteira. Nada casando — ou um padrão que não compila — dá uma tabela vazia. Um argumento inválido registra um aviso e devolve false.
Cada busca recomeça logo depois da ocorrência anterior, no resto do texto como se fosse um texto novo, então ^ casa de novo em cada ponto de recomeço. Uma ocorrência vazia avança um caractere.
Os padrões usam a sintaxe do PCRE2. Cada busca tem um teto fixo de trabalho de backtracking, então um padrão patológico para de casar em vez de travar o script.
Exemplo
Seção intitulada “Exemplo”local numeros = pregMatch("x=10, y=-3, z=42", "(-?\\d+)")-- numeros = { "10", "-3", "42" }
local primeirasDuas = pregMatch("a1 b2 c3", "[a-z]\\d", 0, 2)-- primeirasDuas = { "a1", "b2" }Veja também
Seção intitulada “Veja também”getUserdataType— Diz que tipo de handle um userdata é.pregFind— Diz se uma expressão regular casa com uma string.pregReplace— Substitui todas as ocorrências de uma expressão regular.