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: