Função pública FindEmailInString (StringToSearch como a corda) como a corda
sExp não ofuscante como a corda
sExp = “\ b [A-Z0-9. _%+-] +@ [A-Z0-9. -] + \. [A-Z] {2.4} \ b”
rgxExtract de FindEmailInString (StringToSearch, sExp)
Função do fim
rgxExtract público da função (alvo opcional de ByVal como a variação, _
Teste padrão opcional como a corda = o "", _
Artigo opcional de ByVal como por muito tempo = 0, _
Diferenciando maiúsculas e minúsculas opcional como bôoleano = falso, _
FailOnError opcional como bôoleano = retifica, _
Opcional persistir como bôoleano = falso) o _
Como a variação
'Função de harmonização da expressão regular apropriada para o uso
'em VB/A geralmente e em perguntas do acesso.
'Por John Nurick. 14 de janeiro de 06 atualizado.
'Toma uma corda de busca (alvo) e uma expressão regular
'(Teste padrão), e um argumento opcional do artigo.
'- Se o artigo é omitido e um substring do alvo combina o teste padrão,
' retornos que substring.
'- Se o teste padrão inclui o agrupamento de parênteses, um substring do alvo
' combina o teste padrão, e o artigo é um inteiro, retorna o submatch
' especific por Artigo (o primeiro submatch é o artigo 0). Se não há
' bastante submatches, zero dos retornos. Valores negativos do começo do artigo
' contando com o último submatch.
'- Se nenhum fósforo, retornos anula.
'- Os retornos anulam no erro a menos que FailOnError for verdadeiro.
' Combina sempre de encontro ao alvo inteiro (isto é global e
' Multiline ser verdadeiro).
'Fósforos diferenciando maiúsculas e minúsculas não obstante o caso.
'Persistem os controles se o objeto compilado de RegExp
'permanece na memória pronta para a chamada seguinte ao
'função ou se está dispor imediatamente. Isto
'significa que a função pode ser usada nas perguntas sem ter
'para criar, compilar, usar e destruir um objeto novo de RegExp para
'cada fileira que está sendo processada. Mas igualmente significa que o objeto
'as sobras na memória após a pergunta funcionaram. Para destruir
'objetar e liberar a memória, chamam esta função uma
'última vez sem argumentos.
'
'Chamando a função com argumentos diferentes (por exemplo um novo
'O teste padrão) recompiles o objeto de RegExp, assim
'a função pode ser usada em perguntas diferentes. De qualquer modo lá
'podem ser os problemas se duas linhas estão chamando a função em
'o mesmo tempo.
rgxPROC_NAME de Const = “rgxExtract”
Minério de estática como o objeto 'VBScript_RegExp_55.RegExp
'Meios de estática da declaração nós não temos que criar
'e compilar o objeto de RegExp cada única hora
'a função é chamada.
oMatches não ofuscantes como o objeto 'VBScript_RegExp_55.MatchCollection
No erro ErrHandler empreendedores
valor do retorno do defeito do rgxExtract = do zero '
'N.B.: se FailOnError é falso, retorna o zero no erro
Se IsMissing (alvo) então
'Este é o sinal dispr do minério
Ajustar o minério = nada
Retirar a função 'com valor de defeito
Terminar se
'Criar o objeto de RegExp caso necessário
Se o minério não é nada então
Ajustar o minério = o CreateObject (“VBScript.Regexp”)
Terminar se
Com minério
'Verific se os argumentos atuais (à excepção do alvo)
'ser diferente daqueles armazenados no minério, e actualizá-los
'(desse modo recompiling o regex) somente caso necessário.
Se diferenciando maiúsculas e minúsculas = .IgnoreCase então
.IgnoreCase = não .IgnoreCase
Terminar se
. Global = retificar
. Multiline = retificar
' Se Multiline <> . Multiline então
' . Multiline = Multiline
' Terminar se
Se teste padrão <> . Teste padrão então
. Teste padrão = teste padrão
Terminar se
'Finalmente, executar o fósforo
Se IsNull (alvo) então
rgxExtract = zero
Mais
Ajustar oMatches = oRE.Execute (o alvo)
Se oMatches.Count > 0 então
Se oMatches (0) .SubMatches.Count = 0 então
'Nenhum () grupo no teste padrão: retornar o fósforo
Se artigo < 0="" Then="">= oMatches.Count
'O artigo positivo excedeu o número de fósforos
rgxExtract = zero
Se FailOnError então
Err.Raise 9
Terminar se
Encaixotar mais
rgxExtract = oMatches (artigo)
Extremidade seleta
Mais 'há uns ou vários () grupos capturados no teste padrão
'retornar esse especific por Artigo
Com oMatches (0) .SubMatches
Se artigo < 0="" Then="">=. Contagem
'O artigo positivo excedeu o número de submatches
rgxExtract = zero
Se FailOnError então
Err.Raise 9
Terminar se
Encaixotar mais 'o número de artigo válido
rgxExtract =. Artigo (artigo)
Extremidade seleta
Extremidade com
Terminar se
Mais
rgxExtract = zero
Terminar se
Terminar se
Terminar com
'Ordenar e saída normal
Se não persiste o minério então ajustado = nada
Retirar a função
ErrHandler:
Se FailOnError então
Com errar
Selecionar o caso. Número
'Substituir “a mensagem do erro objeto-definido” do defeito
Caso 9: . Descrição = “subscrição fora da escala (o _ pedido do número de artigo”
& “era maior do que o número de fósforos encontrados, ou do que o número” de _
& “(...) agrupamento/que captura parênteses no teste padrão).”
Caso 13: . Descrição = “tipo má combinação, provavelmente porque” _
& “o argumento do "" do alvo do "" não podia ser convertido a uma corda”
Caso 5017: . Descrição = de “erro sintaxe na expressão regular”
Caso 5018: . Descrição = “quantifier inesperado na expressão regular”
Caso 5019: . Descrição = “esperado “]” na expressão regular "
Caso 5020: . Descrição = “esperado ")” na expressão regular "
Caso mais
Se o minério não é nada então 'não é criado o objeto de Regexp
. A descrição = “não podia criar o objeto de VBScript.RegExp. ” & Err.Description
Mais 'erro inesperado
. Descrição = rgxPROC_NAME & “: ” &. Descrição
Terminar se
Terminar seleto
Ajustar o minério = nada
. Levantar Err.Number, rgxPROC_NAME, _
rgxPROC_NAME & “(): ” &. Descrição
Extremidade com
Mais 'falha silenciosamente
Err.Clear
Ajustar o minério = nada
Terminar se
Terminar a função
|