RegExp (gb.pcre)

Esta classe representa uma expressão regular, com o qual você pode executar correspondências de várias strings e recuperar sub correspondências (as partes da string alvo que correspondem as expressões entre parênteses).

Esta classe é criável.

Esta classe funciona como um array apenas leitura.

Constantes
Anchored   Se esta constante for especificada, o padrão é obrigado a ser "anchored", ou seja, é restrito para coincidir com apenas no primeiro ponto da correspondência na string que está sendo pesquisada (a "string subject").
BadMagic   Esta constante PCRE de erro não é usada em Gambas (ainda).
BadOption   Esta constante PCRE de erro não é usada em Gambas (ainda).
BadUTF8   Esta constante PCRE de erro não é usada em Gambas (ainda).
BadUTF8Offset   Esta constante PCRE de erro não é usada em Gambas (ainda).
Callout   Esta constante PCRE de erro não é usada em Gambas (ainda).
Caseless   Especifica uma correspondência case-insensitive.
DollarEndOnly   Especifica que a expressão de cifrão ($) não irá corresponder a uma nova linha no final da string correspondente, mas apenas o fim real da string. Por padrão, um cifrão vai coincidir com o final da string, com ou sem uma nova linha que a preceda.
DotAll   Especifica que a expressão regular ponto (.) vai mesmo corresponder a finais de linha, o que lhe permite tratar um texto multi-linha como uma longa linha.
Extended   Especifica a sintaxe da expressão regular estendida. Neste modo, os espaços em branco e comentários são permitidos em suas expressões regulares. Os comentários são Perl-style, ou seja, eles começam com um hash (#) e continuam até o final da linha.
Extra   Esta opção foi inventada, a fim de ativar a funcionalidade adicional PCRE que é incompatível com Perl, mas atualmente é de muito pouco uso.
Greedy  
MatchLimit   Especifica o número máximo de correspondências para retornar.
MultiLine   Especifica que o texto da correspondência é multi-line, de modo que os modificadores acento circunflexo (^) e ($) corresponderão aos começos e finais de linhas em qualquer lugar dentro do texto.
NoAutoCapture   Se esta opção é especificada, ela desativa o uso de parênteses, captura numeradas no padrão.
NoMatch   Esta constante PCRE de erro não é usada em Gambas (ainda).
NoMemory   Esta constante PCRE de erro não é usada em Gambas (ainda).
NoSubstring   Esta constante PCRE de erro não é usada em Gambas (ainda).
NoUTF8Check   Quando a opção UTF8 está definida, a validade do padrão como uma string UTF-8 é verificada automaticamente.
NotBOL   Com a constante MultiLine especificada, indica que a expressão acento circunflexo (^) não deve coincidir com o início da string. Sem definir a constante MultiLine, indica que o acento circunflexo não deve corresponde a nada.
NotEOL   Com a constante MultiLine especificada, indica que a expressão de cifrão ($) não deve coincidir com o final da string. Sem a constante MultiLine, indica que o dólar não deve corresponde a nada.
NotEmpty   Uma string vazia não é considerado um correspondência válida se esta opção for definida. Se existem alternativas no padrão, elas são testadas. Se todas as alternativas corresponder a string vazia, toda a correspondência falhará.
Null   Esta constante PCRE de erro não é usada em Gambas (ainda).
UTF8   Esta opção faz PCRE considerar tanto o padrão quanto as correspondências como strings de caracteres UTF-8 em vez de strings com caracteres de byte único.
Ungreedy   Especifica uma correspondência especial por padrão, como se cada um modificador de repetição fossem seguidos por "?". Por exemplo, com a correspondência "aabaaaab" e um padrão de "a + b.", Por padrão, o texto de partida seria toda a string, mas com Ungreedy especificado, o correspondência vai retornar "AAB".
UnknownNode   Esta constante PCRE de erro não é usada em Gambas (ainda).

Métodos estáticos
FindAll  
Match   Esse método estático usa os mesmos parâmetros que o construtor Regexp. No entanto, não cria um novo objeto, mas em vez disso, retorna uma referência corresponde ao padrão.
Replace   Encontra todas as ocorrência do Pattern no Subject, e retornar uma string onde todas são substituídos pela string Replace.

Propriedades
Count   Retorna o número de submatches produzidos pela expressão regular.
Error   Retorne o código de erro levantado pela última chamada para o método Compile ou Exec.
Offset   Retorna o deslocamento do início da correspondência, ou seja, quantos caracteres precedê-lo na string subject.
Pattern   Retorne o padrão da expressão regular.
SubMatches   A submatch é uma parte de seu padrão entre parênteses. Por exemplo, dado o padrão "brown (S+)", o primeiro e único elemento na coleção SubMatches seria a palavra seguinte "brown" no texto do correspondente. Com um tema de "quick brown fox", SubMatches[0] deve conter "fox" e Submatches.Count seria 1.
Subject   Retorne a expressão subject regular.
Text   Contém o texto devolvido pela correspondência. Com um tema de "rápida raposa marrom" e um padrão de "marrom (\S+)", Texto conteria "raposa marrom".

Métodos
Compile   Compilar permite a você pré-compilar uma expressão regular para execução posterior pelo método Exec. Isso é útil quando você tem um padrão que você quer comparar em um monte de texto, porque a compilação de uma vez e executar muitas vezes é muito mais rápido do que a compilação e execução de cada vez.
Exec   Exec permite que você execute uma expressão regular compilada anteriormente contra um texto do correspondente. Isto é útil principalmente quando você tem muitos textos subject diferentes que você quer comparar, porque você pode compilar uma expressão regular uma vez e usar Exec repetidamente para aumentar a velocidade.

Sub registros

A correspondência é uma parte de seu padrão entre parênteses.

Para acessar as correspondência use a propriedade Count e o assessor matriz da classe RegExp.

Exemplo

Por exemplo, dada a expressão regular:

raposa (\S+)

e a string:

A rápida raposa marrom maliciosamente saltou sobre o cão preguiçoso

a propriedade do seu objeto Regexp Text (ou RegEx[0].Text) seria:

raposa marrom

e sua propriedade RegExp[1].Text daria o texto da primeira correspondência:

raposa

o deslocamento na seqüência é dado pela propriedade Offset, 10 neste caso.

Este é apenas um exemplo simples do que as expressões regulares podem fazer por você durante a análise input textual; eles são uma ferramenta muito poderosa. Por exemplo, a seguinte expressão regular irá extrair endereços de e-mail válidos para você:

(?i)\b[a-z0-9._%\-]+@[a-z0-9._%\-]+\.[A-Z]{2,4}\b

Exemplo de programa para analisar a saída do vmstat -D:
Dim sDiskIO As String
Dim cVal As New Collection
Dim rMatch As New RegExp

' obter estados dos discos I/O
Exec ["vmstat", "-D"] To sDiskIO
For Each sVal In ["total reads", "read sectors", "writes", "written sectors"]
  rMatch.Compile("^\\s*(\\d+)\\s+" & sVal, RegExp.MultiLine)
  rMatch.Exec(sDiskIO)
  If rMatch.Count = 1 Then
    cVal[Replace(sVal, " ", "_")] = rMatch[1].Text
  Else
    Error.Raise("Missing '" & sVal & "' in 'vmstat -D' output")
  Endif
Next
Print "total leitura: " & cVal!total_reads & " read sectors:" & cVal!read_sectors
Print "escrita: " & cVal!writes & " written sectors: " & cVal!written_sectors

Veja também