 Visual Basic 6 - Usando Expressões regulares
 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