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: