Escolar Documentos
Profissional Documentos
Cultura Documentos
Página 1
Aplica-se a:
Este documento se aplica ao SAP ECC 6.0, SAP Netweaver 2004s. Para obter mais informações, visite oABAP
pagina inicial.
Resumo
A expressão regular é uma ferramenta poderosa para processamento de texto. O processamento de expressões regulares pode ajudá-lo a estender
seus recursos ABAP. Muitos problemas de pesquisa e substituição de texto são difíceis de resolver sem usar
correspondência de padrão de expressão regular. Este artigo fornece uma introdução à tecnologia de expressão regular em
ABAP.
Biografia do autor
Shaira Madhu está trabalhando como consultor de tecnologia SAP na Applexus Software Solutions (P) Ltd.
https://translate.googleusercontent.com/translate_f 1/12
21/10/2021 10:28 Processamento de Expressão Regular em ABAP
REDE DE COMUNIDADE SAP SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
© 2010 SAP AG 1
Índice
O que é expressão regular? .................................................. .................................................. ......................... 3
CONSTRUTOR - Atribuição de uma expressão regular a uma string de caracteres ....................................... ........ 5
CREATE - Função para Criar Matchers ........................................... .................................................. ..... 5
FIND_NEXT - Pesquisar a próxima correspondência ............................................ .................................................. .............. 6
FIND_ALL - Pesquisar todas as partidas subsequentes ........................................... ................................................ 6
CORRESPONDÊNCIA - Use Expressão Regular para Conjunto de Caracteres Reamaning ......................................... ........................ 6
REPLACE_NEXT - Substituição da Próxima Partida ........................................... ........................................... 7
REPLACE_FOUND - Substituição da última correspondência encontrada .......................................... .............................. 7
REPLACE_ALL - Substituição de todas as correspondências subsequentes ............................................ ............................... 7
GET_MATCH - Consulta do estado atual ........................................... .................................................. ....... 8
GET_SUBMATCH - Consulta de subgrupo .............................................. .................................................. ............ 8
GET_OFFSET - Consulta de Substituição da Última Correspondência Encontrada ........................................ ........................ 8
GET_LENGTH - Consulta do comprimento da última correspondência encontrada ....................................... .............................. 8
GET_LINE - Consulta da linha da última correspondência encontrada ....................................... ......................................... 8
CONTAINS - Procurar Expressão Regular ............................................ .................................................. ... 9
MATCHES - Teste de correspondência com a expressão regular .......................................... .......................................... 9
REDE DE COMUNIDADE SAP SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
© 2010 SAP AG 2
https://translate.googleusercontent.com/translate_f 2/12
21/10/2021 10:28 Processamento de Expressão Regular em ABAP
Os aplicativos de negócios estão se tornando cada vez mais dependentes do processamento e da geração de strings
porque eles são necessários para gerar código de programa ou dados que são trocados com linguagens de marcação
como XML.
A expressão regular é uma ferramenta poderosa para processamento de texto. Você pode usar expressões regulares para validar
uma entrada de string, extraia um determinado conjunto de dados de uma variável de texto ou pode até mesmo transformar dados para atender ao seu
uso comercial. Um determinado conjunto de dados é denominado válido se, e somente se, corresponder a um determinado
padrão de expressão. O uso mais comum da Expressão Regular é pesquisar substrings em um dado
stream que corresponde a um determinado padrão de Expressão Regular.
A correspondência de padrões com expressão regular pode ser aplicada ao cenário do mundo real, como,
• Validação de id de email.
• Eliminando caracteres especiais de números de telefone.
• Analisa os dados do formato xml.
A instrução FIND procura no texto fornecido uma correspondência com uma expressão regular, conforme mostrado abaixo:
ENCONTRE REGEX 'A * B' EM 'ABAP'.
Toda a expressão de maching será armazenada em variáveis match_result com tipo MATCH_RESULT_TAB.
REDE DE COMUNIDADE SAP SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
© 2010 SAP AG 3
Classes ABAP.
Objetos ABAP fornecem duas classes para expressão regular
• CL_ABAP_REGEX
•
https://translate.googleusercontent.com/translate_f 3/12
21/10/2021 10:28 Processamento de Expressão Regular em ABAP
CL_ABAP_MATCHER
A classe Regex CL_ABAP_REGEX armazena o padrão RE pré-processado. Esta classe gera um modelo orientado a objetos
representação de uma expressão regular em um campo semelhante a um caractere. A classe CL_ABAP_MATCHER aplica um
expressão regular gerada usando CL_ABAP_REGEX para uma cadeia de caracteres ou uma tabela interna.
Ao criar um objeto desta classe, a expressão regular REGEX é associada ao texto ' TEXT' para ser
processado ou com a tabela ' TABLE' para ser processado. Um objeto da classe CL_ABAP_REGEX pode ser
usado com qualquer número de objetos da classe CL_ABAP_MATCHER . Todas as expressões correspondentes serão
armazenado em variáveis com tipo MATCH_RESULT_TAB .
As operações de localização e substituição são acionadas por vários métodos cujos resultados são armazenados no estado interno
do objeto. Além disso, o sucesso de uma ação é devolvido na forma de valores booleanos. O actual
o estado de edição pode ser consultado usando vários métodos get .
Para todas as operações regex, como localização e substituição, os seguintes métodos estão disponíveis:
• find_all ([corresponde])
• jogo (sucesso)
O estado e o resultado da operação localizar ou substituir podem ser consultados usando os seguintes métodos:
• get_match (corresponder)
• get_match (corresponder)
Além disso, para facilitar a programação, são fornecidos métodos que podem ser usados principalmente em expressões lógicas:
• criar (padrão, [texto], [tabela], [ignore_case], [matcher])
REDE DE COMUNIDADE SAP SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
© 2010 SAP AG 4
Exceções
Quando ocorre um erro, uma exceção da classe de erro CX_SY_MATCHER é acionada de acordo com o
parâmetro de texto:
• CX_SY_MATCHER_INVALID_ARGUMENTS
• CX_SY_MATCHER_NO_CURRENT_MATCH
Uma substituição de texto ou consultas de resultado foram executadas sem uma correspondência válida.
https://translate.googleusercontent.com/translate_f 4/12
21/10/2021 10:28 Processamento de Expressão Regular em ABAP
• CX_SY_MATCHER_INVALID_SUBMATCH
• CX_SY_MATCHER_INVALID_MATCH_OPERATION
Se as exceções não forem detectadas, o erro de tempo de execução INVALID_REGEX será acionado.
Ao criar um objeto desta classe, a expressão regular regex é vinculada ao texto do texto a ser processado ou ao
tabela da tabela a ser processada. Um objeto da classe CL_ABAP_REGEX pode ser usado com qualquer número de objetos do
classe CL_ABAP_MATCHER .
Se nenhum dos dois parâmetros text ou table for especificado, a exceção atribuída à classe CX_SY_MATCHER é
criado. Se a expressão regular regex foi criada em um ambiente diferente do ambiente de texto atual, o
catchable CX_SY_REGEX_LOCALE_MISMATCH exceção é acionada.
O método de classe create (pattern, {text | table}, [ignore_case], [no_submatches}, [simple_regex], matcher) retorna
um objeto de correspondência para o padrão de padrão especificado e o texto de texto especificado . As opções ignore_case ,
no_submatches , e simple_regex afectar a semântica do análogo expressão regular para o construtor do
classe CL_ABAP_REGEX .No parâmetro matcher , um objeto de comparação do tipo CL_ABAP_MATCHER é retornado
No caso de uma exceção regular inválida, a exceção capturável CX_SY_INVALID_REGEX é levantada. Se nenhum dos
parâmetro texto ou tabela é passado, a exceção capturável CX_SY_INVALID_REGEX_OPERATION é levantada.
REDE DE COMUNIDADE SAP SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
© 2010 SAP AG 5
Este método procura a próxima correspondência com a expressão regular e armazena o resultado internamente. o
O valor de retorno booleano especifica se outra correspondência foi encontrada. Se o método for bem-sucedido, você pode usar
os métodos get para obter informações sobre o local encontrado ou substituí-lo por replace_found (novo) . Se o
método não é bem-sucedido, a última correspondência encontrada é redefinida. Assim que o texto é totalmente pesquisado, chamadas repetidas de
find_next (sucesso) sempre retornará o valor sucesso = ''.
Nas correspondências de parâmetro , este método retorna todas as correspondências não sobrepostas restantes da expressão em
uma tabela interna do tipo match_result_tab . Se o padrão não for encontrado, uma mesa vazia é returned.Calling
find_all (correspondências) redefine a última correspondência encontrada. Chamar um método get após find_all (coincide) levanta um
exceção capturável. Depois de chamar find_all (coincide) , toda a sequência de caracteres ou tabela é considerada como
processado. Chamadas repetidas do método não retornarão mais correspondências.
https://translate.googleusercontent.com/translate_f 5/12
21/10/2021 10:28 Processamento de Expressão Regular em ABAP
DADOS: lt_result TYPE match_result_tab.
It_result = matcher-> find_all ().
Se as linhas (lt_result) GT 0.
v_exist = 'Y'.
FIM SE.
Este método verifica se a expressão corresponde a toda a seção do caractere ainda não pesquisada
string e retorna o resultado no parâmetro booleano sucesso .Se o método for bem sucedida; você pode usar o
get métodos para obter informações sobre a correspondência, análogo a find_next (sucesso) . Se o método não for
bem-sucedido, a correspondência atual é redefinida.
Uma vez que o método tenha sido chamado, toda a seqüência de caracteres é considerada processada. Chamadas repetidas
de partida (sucesso) não retornará e mais partidas.
** JOGO - validação de ID de e-mail.
Dados v_pattern = '^ ([0-9a-zA-Z] ([-. \ W] * [0-9a-zA-Z]) * @ ([0-9a-zA-Z] [- \ w] * [0-9a-zA-Z] \.) + [A-
zA-Z] {2,9}) $ '.
Text = 'test@gmail.com').
IF v_sucess = abap_false.
Mensagem 'e-mail id inválido' TYPE 'I'.
FIM SE.
Este método não pode ser chamado durante o processamento de tabelas internas; qualquer tentativa de fazer isso levantará a exceção
CX_SY_INVALID_REGEX_OPERATION ..
REDE DE COMUNIDADE SAP SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
© 2010 SAP AG 6
Este método procura a próxima correspondência da expressão regular e a substitui pela sequência de caracteres
definido pela string de substituição newtext .
O valor de retorno booleano success contém o valor 'X' se uma correspondência for encontrada e substituída.
A correspondência atual armazenada é redefinida. Chamar um método get após replace_next (newtext) levanta um capturável
exceção.
Chamar o método replace_next (newtext) tem o mesmo efeito que a sequência de chamada find_next () seguida
por replace_found (newtext) .
Este método substitui a última correspondência encontrada com a cadeia de caracteres definida pelo padrão de substituição
novo texto .
O valor de retorno booleano success contém o valor 'X' se a correspondência atual foi armazenada e substituída.
A correspondência atual armazenada é redefinida. Chamar um método GET após replace_found (newtext) dispara um
exceção capturável.
No caso de replace_found (sucesso) , o caractere especial $ ` sempre se refere ao final da última correspondência
ou substituição de texto e não para o início da linha.
https://translate.googleusercontent.com/translate_f 6/12
21/10/2021 10:28 Processamento de Expressão Regular em ABAP
Se o padrão de substituição for inválido, a exceção capturável CX_SY_INVALID_REGEX_FORMAT é gerada.
Este método substitui todas as correspondências atuais, bem como todas as correspondências restantes não sobrepostas do
expressão com a sequência de caracteres definida pelo padrão de substituiçãonovo texto .
O parâmetro de contagem contém o número de correspondências substituídas. Se nenhuma correspondência for substituída, a contagem tem o
valor 0 .
A correspondência atual armazenada é redefinida. Chamar um método get após replace_all (corresponde a) gera um capturável
exceção.
* Eliminando caracteres especiais de números de telefone.
DADOS: lr_matcher TIPO REF PARA cl_abap_matcher,
v_cnt TYPE I.
EXPERIMENTE.
lr_matcher = cl_abap_matcher => criar (padrão = '\ + | \ s | \ (| \) | -'
EXPERIMENTE.
MÉTODO DA CHAMADA lr_matcher-> replace_all
EXPORTADOR
newtext = ''
recebendo
count = v_cnt
.
CATCH cx_sy_matcher.
ENDTRY.
REDE DE COMUNIDADE SAP SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
© 2010 SAP AG 7
Após a chamada de replace_all (count) , toda a cadeia de caracteres ou tabela é considerada processada.
Chamadas repetidas do método não farão nenhuma substituição adicional.
O conteúdo de caracteres especiais como $ 1 são recalculados para cada correspondência. No entanto, o caractere especial $ `
sempre se refere ao final da última correspondência ou substituição de texto no momento em que o método foi chamado .
No parâmetro match , este método retorna a correspondência atual da expressão regular da estrutura do
digite match_result .
Este método retorna a cadeia de caracteres do subgrupo com o índice de número da correspondência atual no
submatch de parâmetro . O subgrupo 0 representa a correspondência completa.
Cadeia de caracteres do tipo v_smatch de dados.
Se nenhuma correspondência atual for armazenada, a exceção CX_SY_NO_CURRENT_MATCH será gerada. Se o subgrupo com
o índice numérico não existe, a exceção CX_SY_INVALID_SUBMATCH é levantada.
https://translate.googleusercontent.com/translate_f 7/12
21/10/2021 10:28 Processamento de Expressão Regular em ABAP
Este método retorna o deslocamento da correspondência atual no deslocamento do parâmetro . Se você especificar um valor numérico
índice , o sistema retorna o deslocamento do subgrupo com o índice de número . O subgrupo 0 representa o
partida completa.
Se nenhuma correspondência atual for armazenada, a exceção CX_SY_NO_CURRENT_MATCH será gerada. Se o subgrupo com
o índice numérico não existe, a exceção CX_SY_INVALID_SUBMATCH é levantada.
Este método retorna o comprimento da correspondência atual no comprimento do parâmetro , se um índice de valor numérico for
especificado, o sistema retorna o comprimento do subgrupo com o índice de número . O subgrupo 0 representa
a partida completa.
Se nenhuma correspondência atual for especificada, a exceção CX_SY_NO_CURRENT_MATCH será levantada. Se o subgrupo
com o índice de número não existe, a exceção CX_SY_INVALID_SUBMATCH é levantada.
REDE DE COMUNIDADE SAP SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
© 2010 SAP AG 8
Este método classe estática verifica se a expressão regular padrão está contida na pesquisa de texto texto
ou na tabela da tabela interna . Um valor booleano é retornado como resultado.
A semântica da expressão pode ser influenciada por quaisquer opções suportadas pelo construtor da classe
CL_ABAP_REGEX. Depois de chamar o método contains () , você pode usar get_object (matcher) para criar um
instância da classe CL_ABAP_MATCHER , cujo status corresponde ao resultado de contains () .
Este método classe estática verifica se a expressão regular padrão está contida na pesquisa de texto texto
ou na tabela da tabela interna . Um valor booleano é retornado como resultado.
A semântica da expressão pode ser influenciada por quaisquer opções suportadas pelo construtor da classe
CL_ABAP_REGEX. Depois de chamar o método contains () , você pode usar get_object (matcher) para criar um
instância da classe CL_ABAP_MATCHER , cujo status corresponde ao resultado de contains () .
Personagem de fuga
https://translate.googleusercontent.com/translate_f 8/12
21/10/2021 10:28 Processamento de Expressão Regular em ABAP
\D Espaço reservado para qualquer caractere diferente de um dígito
\EU Espaço reservado para qualquer caractere que não seja uma letra minúscula
\VOCÊ Espaço reservado para qualquer caractere que não seja uma letra maiúscula
REDE DE COMUNIDADE SAP SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
© 2010 SAP AG 9
[ [:em branco:] ] Descrição para caracteres em branco e tabuladores horizontais em um conjunto de valores
[[: espaço:]] Descrição de todos os caracteres em branco, tabuladores e feeds de carro em um conjunto de valores
[[: unicode:]] Descrição de todos os caracteres Unicode em um valor definido com um código maior que 255
https://translate.googleusercontent.com/translate_f 9/12
21/10/2021 10:28 Processamento de Expressão Regular em ABAP
{n, m}? Reservado para melhorias posteriores
? Um ou nenhum caractere
REDE DE COMUNIDADE SAP SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
© 2010 SAP AG 10
(? =) Condição de visualização
https://translate.googleusercontent.com/translate_f 10/12
21/10/2021 10:28 Processamento de Expressão Regular em ABAP
REDE DE COMUNIDADE SAP SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
© 2010 SAP AG 11
Conteúdo Relacionado
Caracteres especiais em expressões regulares
https://translate.googleusercontent.com/translate_f 11/12
21/10/2021 10:28 Processamento de Expressão Regular em ABAP
REDE DE COMUNIDADE SAP SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
© 2010 SAP AG 12
A SAP não se responsabiliza por quaisquer danos causados pelo uso ou uso indevido das informações, código ou métodos sugeridos neste documento,
e qualquer pessoa que use esses métodos o faz por sua própria conta e risco.
A SAP não oferece garantias e não assume qualquer responsabilidade ou obrigação de qualquer tipo com relação ao conteúdo deste artigo técnico ou
amostra de código, incluindo qualquer responsabilidade resultante de incompatibilidade entre o conteúdo deste documento e os materiais e
serviços oferecidos pela SAP. Você concorda que não irá considerar, ou procurar manter, a SAP responsável ou responsabilizada com relação ao conteúdo deste
documento.
REDE DE COMUNIDADE SAP SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com
© 2010 SAP AG 13
https://translate.googleusercontent.com/translate_f 12/12