anterior | início | próxima

VBscript

característica  como fazer
-------------------------------------------
busca           método Test
substituição    método Replace
divisão         método Execute
ER crua         -
ignore M/m      propriedade IgnoreCase
global          propriedade Global

Demorou, mas em 1999 finalmente os usuários do Visual Basic® Scripting Edition puderam experimentar o tão desejado recurso de expressões regulares, implementado na versão 5.0 do Microsoft® Scripting Engines. O nome do objeto que trata das expressões é RegExp, e para o alívio dos programadores, a sintaxe e a funcionalidade das ERs no VBScript são similares ao Perl, então não precisa aprender uma linguagem nova.

Assim, se na sintaxe da ER não há novidade, podemos nos concentrar em como utilizar esse objeto. Dentro dele os métodos que temos são Test e Execute para busca e Replace para substituições. Para ignorar maiúsculas e minúsculas e fazer substituições globais, temos as duas propriedades booleanas IgnoreCase e Global, que devem ser definidas como true para entrarem em ação.

Como peculiaridade, a ER não pode ser passada diretamente ao método, ela precisa primeiro ser definida na propriedade Pattern. Vamos a um exemplo:

Dim er, texto
Set er = new regexp
texto = "visual"

er.Pattern = "^[A-Z]+$"
er.IgnoreCase = true

if er.Test(texto) then
  msgbox ("casou!")
end if

Então instanciamos o objeto er e definimos um texto qualquer a ser casado. Depois definimos a ER, uma linha toda de maiúsculas, na propriedade Pattern e ligamos a opção de "ignorância". Por fim, fazemos o Test da ER no texto. O Replace funciona de maneira similar, sem surpresas.

O método Execute funciona como um split ao contrário, em que você informa o padrão e não o separador. Ele casa a ER no texto e retorna todos os pedaços de texto em que a ER casou de maneira organizada, seguindo uma hierarquia. Ele retorna um objeto "collection" chamado Matches que, por sua vez, contém zero ou mais objetos Match. Cada um desses Match contém um pedaço casado, que além do texto propriamente dito, também tem a posição de início do casamento no texto original e o tamanho desse trecho. Vamos ver um exemplo que separa os trechos por espaços em branco, com um diagrama de brinde no cabeçalho:

' --- hierarquia do Execute e seus objetos
'
' Execute
'    |
' Matches ---> Count, Item
'    |
'  Match  ---> FirstIndex, Lenght, Value*
'
' * o Value é o padrão de acesso
'
Dim er, texto
er = new regexp
texto = "um dois três"
er.Pattern = "[^ ]+"

z = er.Execute(texto)      'retorna 3 objetos Match
for i = 0 to (z.Count - 1) 'para cada Match,
  msgbox z.Item(i)         'mostre o trecho casado
next

Você pode ter mais informações e exemplos em:

Está gostando da leitura?
Está aprendendo?
Compre o livro novo que traz mais conteúdo, texto atualizado e ilustrações!
anterior | início | próxima