Visual Basic 6 - Usando Expressões regulares
|
Você já falar em 'expressões regulares"
? Elas
são muito úteis para realizar comparações padrões esperados e muito usadas em
validações pois facilitam a vida do desenvolvedor. |
Podemos considerar uma
Expressão Regular: Um
método formal de se especificar um padrão de texto.
Ex: A
expressão regular
[0-9]+
lhe
permitirá localizar qualquer número inteiro num arquivo.
Obs: No exemplo, usamos
colchetes para criar uma classe de caracteres
[0-9].
Esta classe de caracteres coincidirá com qualquer caracter que
for um dígito. O operador
+
significa que aquela classe de caracteres deverá ser satisfeita
por (ao menos) um ou mais dígitos.
"Expressão regular
é para palavras o que a matemática é para números."
Uma expressão regular
define um padrão a ser usado para procurar ou substituir
palavras ou grupos de palavras. É um meio preciso de se fazer
buscas de determinadas porções de informação.
Nota : leia o artigo :
Validação de formulário : CEP ,
Email e CPF -
que trata do uso das expressões
regulares no ASP.NET
A versão 5 do VBScript
permitiu o acesso as expressões regulares. (Lembre-se que as expressões
regulares são um conceito que não esta vinculado a nenhuma linguagem e pode ser
usado pelo VB , C , Java , Perl , etc.)
Podemos usar as expressões regulares no VB ?
Claro que sim , basta você fazer o download do pacote :
Microsoft Windows Script 5.6 (Windows 2000, XP) e instalar se ainda não
estiver instalado e incluir uma referência da biblioteca no seu projeto.
A utilização das expressões regulares no VB usa
o objeto RegExp para efetuar verificações/validações de expressões contra
um modelo padrão definido. O objeto fornece as seguintes propriedades que podem
ser usadas para definir o padrão para comparar as strings que serão passadas com
a instância do RegExp
-
Pattern - é uma string que define a
expressão regular
-
IgnoreCase - Uma propriedade
booleana que indica se você precisa testar a expressão contra todos as
possíveis comparações na string
-
Global - Define ou retorna um valor
booleano que indica se o padrão deve coincidir com todas as ocorrências na
string como um todo ou se o padrão deve coincidir apenas com a primeira
ocorrência.
O objeto RegExp também fornece os
seguintes métodos para determinar se uma string coincide com um padrão
particular da expressão:
-
Test - Retorna um valor booleano
que indica se a expressão pode ser coincidida com sucesso com a string.
-
Execute - Retorna um objeto
MatchColletcion que contém um objeto Match para cada coincidência obtida
com sucesso.
Para fazer a comparação de uma string com uma
expressão regular , siga os seguintes passos:
-
Defina a expressão regular usando um
método Pattern do objeto RegExp
-
Obtenha a string para examinar com o
modelo padrão
-
Defina a propriedade IgnoreCase do
objeto para True
-
Passe a string que você obteve no passo 2
como um argumento para o método Execute do objeto
-
Atribua o valor retornado do método
Execute para o objeto MatchCollection
Vamos então a um exemplo
para que tudo fique mais claro:
- Inicie um novo projeto no VB do tipo
Standard EXE dando ao mesmo um nome pertinente. Ex: RegExp
- No menu Project clique em
References e a seguir marque : Microsoft VBScript Regular Expressions
5.5
- No formulário padrão insira três caixas de
texto , um botão de comando e três labels conforme figura abaixo:
Vamos criar uma função que irá ser chamada para
testar a expressão regular. Abaixo o código da mesma:
Function TestaRegExp(padrao As String, texto As String)
Dim objRegExp As RegExp
Dim objMatch As Match
Dim colMatch As MatchCollection
Dim valor As String
'cria um objeto expressão regular
Set objRegExp = New RegExp
'define o padrão - Pattern
objRegExp.Pattern = padrao
'define IgnoreCase
objRegExp.IgnoreCase = True
'define a propriedade global
objRegExp.Global = True
'verifica se a string pode ser comparada
If (objRegExp.Test(texto) = True) Then
'obtem as coincidencias
Set colMatch = objRegExp.Execute(texto) 'executa a busca
For Each objMatch In colMatch
valor = valor & " padrao encontrado na posição "
valor = valor & objMatch.FirstIndex & ". o valor é '"
valor = valor & objMatch.Value & " '." & vbCrLf
Next
Else
valor = "Comparação falhou !"
End If
TestaRegExp = valor
End Function
|
Para chamar a função insira o código abaixo no
evento Click do botão de comando:
Private Sub Command1_Click()
Text3.Text = TestaRegExp(Text1.Text, Text2.Text)
End Sub
|
Estamos comparando o padrão is com o
texto IS1 is2 IS3 is4 e exibindo o valor obtido no retorno da função na
caixa de texto - Text3.text.
O resultado obtido é :
Vamos a algo mais prático. O código
abaixo irá procura por todas as palavras em uma string:
' procura por todas as palavras em uma string
Dim re As New RegExp
Dim m As Match
Dim t As String
texto = "Introdução a expressões regulares no VB "
re.Pattern = "\w+"
re.Global = True
For Each m In re.Execute(texto)
MsgBox m.Value
Next
|
Abaixo temos uma pequena (muito pequena) lista
de tipos padrão usadas com as expressões regulares:
x* |
Zero ou mais x's |
x+ |
Um ou mais x's |
x? |
Um ou zero x's |
[A-Z] |
Qualquer
caractere maiúsculo de A-Z |
. |
Qualquer
caractere excepto newline |
\w |
Qualquer
caractere alfanumérico |
\d |
Qualquer digito
(o mesmo que [0-9]) |
^a |
tudo que começa
com a |
s$ |
tudo que termina
com s |
Isto é apenas o inicio , aguarde mais artigos
sobre expressões regulares ...
referências:
José Carlos Macoratti