Sim! O Microsoft Office VBA oferece suporte a expressões regulares que pesquisam nativamente. Você precisa adicionar "Microsoft VBScript Regular Expressions 5.5" como uma referência no VBA Editor para cada arquivo .docm
, .xlsm
, etc. no qual você deseja colocar o código Regex:
AmaiorpartedomodelodeobjetoparaestemódulodeexpressãoregularpodeserencontradanoMSDNMultiLine
.
Você usa da seguinte forma:
- Instancie um novo objeto regex com
Dim rx as New RegExp
- Defina as sinalizações
rx.Global
,rx.MultiLine
erx.IgnoreCase
conforme desejado - Defina o padrão atribuindo a sequência de padrões apropriada a
rx.Pattern
- Se você quiser saber se algo corresponde à regex, use
rx.Test(str)
, que retornaTrue
ouFalse
apropriadamente - Chamar
rx.Execute(str)
retorna um objetoMatchCollection
, que se comporta como uma matriz unidimensional baseada em zero de zero ou maisMatch
objects -
Match
objetos expõem as propriedadesFirstIndex
,Length
,Value
eSubMatches
.-
FirstIndex
é o índice baseado em zero do primeiro caractere do local emstr
no qual a correspondência foi encontrada -
Length
é o tamanho da porção correspondida destr
-
Value
é o resultado da string correspondida -
SubMatches
é uma matriz baseada em zero dos grupos sub-selecionados dentro da correspondência geral- Infelizmente, o regex do VBA do Office não oferece suporte a grupos nomeados como, por exemplo, Python, por isso pode ser necessário usar uma tentativa e erro para corresponder ao índice do grupo com a parte do padrão em que você está interessado
-
Eu não acredito que haja uma maneira de fazer uma operação substitua no local com sed
- é uma funcionalidade somente de pesquisa. Mas, é fácil usar o VBA ao redor para manipular os resultados como você deseja.