Classe tRegEx
A classe tRegEx representa um objeto do tipo RegEx (Regular Expression). A instancia de uma classe permite testar padrões, substituir string, remover ocorrências de uma tag em um texto, etc. Diversas aplicações que realizam operações com string podem ser beneficiar com o uso de expressões regulares. Essa classe foi desenvolvida com base em bibliotecas existentes, como a RE2, da Google https://github.com/google/re2/wiki/Syntax .
Hierarquia
- tRegEx
- tRegEx
Observações
*
Exemplos
User function tRgxNew()
local regex := NIL
regex := tRegex():new("([Z])\w+")
if ValType(regex) <> "O"
ConOut ("Erro, objeto nao foi criado")
else
ConOut ("Objeto criado com sucesso")
endif
regex := tRegex():new("([Z])\w+", .T. ) // Utiliza a biblioteca RE2
if ValType(regex) <> "O"
ConOut ("Erro, objeto nao foi criado")
else
ConOut ("Objeto criado com sucesso")
endif
return
Abrangência
- 3.0.7
Construtores
New
Cria um objeto tRegex com um determinado padrão de texto.
Sintaxe
tRegEx():New( < cPattern >, [ lRE2 ] )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência - | - | - | - | - cPattern | caractere | Padrão de texto | X | lRE2 | lógico | Indica se será utilizada a biblioteca RE2 como motor das operações | |
Retorno
Nome | Tipo | Descrição - | - | - oObj | objeto | Nova instância da classe tRegEx
Exemplos
User function tRgxNew()
local regex := NIL
regex := tRegex():new("([Z])\w+")
if ValType(regex) <> "O"
ConOut ("Erro, objeto nao foi criado")
else
ConOut ("Objeto criado com sucesso")
endif
regex := tRegex():new("([Z])\w+", .T. ) // Utiliza a biblioteca RE2
if ValType(regex) <> "O"
ConOut ("Erro, objeto nao foi criado")
else
ConOut ("Objeto criado com sucesso")
endif
return
Métodos
A classe expõe os seguintes métodos:
Search
Pesquisa o padrão em uma string e retorne o resultado booleano se há alguma substrings correspondente
Sintaxe
Search( < cText > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência - | - | - | - | - cText | caractere | Texto no qual o padrao será procurado. | X |
Retorno
Nome | Tipo | Descrição - | - | - lRet | lógico | Se alguma substring do texto correnponde ao padrão, então o retorno é verdadeiro.
Exemplos
user function tRgxSearch()
local nRet := -1
local lRet := .F.
local regex := NIL
local text1 := "texto com letras"
local text2 := "1231 123123 8575 5676"
local pattern1 := "([a-z])\w+"
local pattern2 := "([1-9])\w+"
regex := tRegex():new("([Z])\w+")
if ValType(regex) <> "O"
Conout('Erro - ValType(regex) <> "O"')
return
endif
nRet := regex:SetPattern(pattern1)
if (nRet != 0)
ConOut("SetPattern " + pattern1 + " falhou: " + regex:GetErrorMsg())
return
endif
lret := regex:Search(text1)
Conout("Encontrou o padrão: " + cvaltochar(lret)) // .T.
lret := regex:Search(text2)
Conout("Encontrou o padrão: " + cvaltochar(lret)) // .F.
nRet := regex:SetPattern(pattern2)
if (nRet != 0)
ConOut("SetPattern " + pattern2 + " falhou: " + regex:GetErrorMsg())
return
endif
lret := regex:Search(text1)
Conout("Encontrou o padrão: " + cvaltochar(lret)) // .F.
lret := regex:Search(text2)
Conout("Encontrou o padrão: " + cvaltochar(lret)) // .T.
return
SetPattern
Atribui uma determinada expressao regular ao objeto. As operacoes realizadas utilizam o padrao definido neste método.
Sintaxe
SetPattern( < cPattern > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência - | - | - | - | - cPattern | caractere | Expressão regular. | X |
Retorno
Nome | Tipo | Descrição - | - | - lOK | lógico | Indica se a atribuição foi realizada com sucesso. Caso seja falso, verificar o erro através da GetError.
Exemplos
user function tRgxSetPattern()
local nRet := -1
local lRet := .F.
local regex := NIL
local text1 := "texto com letras"
local text2 := "1231 123123 8575 5676"
local pattern1 := "([a-z])\w+"
local pattern2 := "([1-9])\w+"
regex := tRegex():new("([Z])\w+")
if ValType(regex) <> "O"
Conout('Erro - ValType(regex) <> "O"')
return
endif
nRet := regex:SetPattern(pattern1)
if (nRet != 0)
ConOut("SetPattern " + pattern1 + " falhou: " + regex:GetErrorMsg())
return
endif
lret := regex:Search(text1)
Conout("Encontrou o padrão: " + cvaltochar(lret)) // .T.
lret := regex:Search(text2)
Conout("Encontrou o padrão: " + cvaltochar(lret)) // .F.
nRet := regex:SetPattern(pattern2)
if (nRet != 0)
ConOut("SetPattern " + pattern2 + " falhou: " + regex:GetErrorMsg())
return
endif
lret := regex:Search(text1)
Conout("Encontrou o padrão: " + cvaltochar(lret)) // .F.
lret := regex:Search(text2)
Conout("Encontrou o padrão: " + cvaltochar(lret)) // .T.
return
SetICase
Determina se o padrão da expressao regular deve ou nao ser case insensitive. O padrão é true.
Sintaxe
SetICase( < lSetICase > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência - | - | - | - | - lSetICase | lógico | Indica se a busca considera case insensitive. | X |
Retorno
Nome | Tipo | Descrição - | - | - nRet | numérico | Indica se o case foi alterado com sucesso. Caso o retorno seja diferente de zero, deu erro.
Exemplos
user function tRgxSetICase()
local nRet := -1
local lRet := .F.
local regex := NIL
local text1 := "texto com letras"
local text2 := "ADASDW GREGEGS ATASFC AWEWEQ"
local pattern1 := "([a-z])\w+"
regex := tRegex():new("([Z])\w+")
if ValType(regex) <> "O"
Conout('Erro - ValType(regex) <> "O"')
return
endif
nRet := regex:SetPattern(pattern1)
nRet := regex:SetICase(.T.)
lret := regex:Search(text1)
Conout('Encontrou o padrão: ' + cvaltochar(lRet)) // .T.
lret := regex:Search(text2)
Conout('Encontrou o padrão: ' + cvaltochar(lRet)) // .T.
nret := regex:SetICase(.F.)
lret := regex:Search(text1)
Conout('Encontrou o padrão: ' + cvaltochar(lRet)) // .T.
lret := regex:Search(text2)
Conout('Encontrou o padrão: ' + cvaltochar(lRet)) // .F.
return
GetError
Sintaxe
GetError( < cFila >, < bAck >, < bWaitingEvent > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência - | - | - | - | - cFila | caractere | Indica o nome da fila onde ser resgatada . | X | bAck | lógico | Indica se o consumo ir ser autoack. | X | bWaitingEvent | lógico | Ignora o timeout e se fica aguardando por uma nova mensagem na fila (no maximo por 30 segundos). | X |
Exemplos
user function tRgxGetError()
local ret := -1
local regex := NIL
local pattern1 := .F.
local err := NIL
regex := tRegex():new("([Z])\w+")
ret := regex:SetPattern(pattern1)
err := regex:GetError()
Conout("Codigo de erro:" + cValtoChar(err))
return
GetErrorMsg
Retorna a descrição do último erro ocorrido.
Sintaxe
GetErrorMsg()
Retorno
Nome | Tipo | Descrição - | - | - cError | caractere | Descreve o erro que ocorreu na ultima operação realizada.
Exemplos
user function tRgxGetErrorMsg()
local ret := -1
local regex := NIL
local pattern1 := .F.
local err := ""
regex := tRegex():new("([Z])\w+")
ret := regex:SetPattern(pattern1)
err := regex:GetErrorMsg()
Conout("Mensagem de erro:" + err)
return
Propriedades
A classe expõe as seguintes propriedades:
Pattern
Conteudo da mensagem recebida aps uma solicitao ao server AMQP via BasicConsume().
Tipo | Valor Padrão | Somente Leitura - | - | - caractere | "" | N
iCase
Indica se deve ser considerado caixa alta. O padrão é falso.
Tipo | Valor Padrão | Somente Leitura - | - | - lógico | N/A | N
Multiline
Indica se a correspondência do texto deve ser multilinha.
Tipo | Valor Padrão | Somente Leitura - | - | - lógico | N/A | N
Literal
Indica que a string deve ser interpretada como literal, não como expressão regular. O padrão é falso.
Tipo | Valor Padrão | Somente Leitura - | - | - lógico | N/A | N
Latin1
Por padrão, os textos de entrada são interpretados como UTF-8. A opção Latin1 faz com que sejam interpretados como Latin-1.
Tipo | Valor Padrão | Somente Leitura - | - | - lógico | N/A | N