Introdução
Este documento descreve como as expressões regulares (regex) funcionam e como testá-las em servidores expressway.
Pré-requisitos
Requisitos
A Cisco recomenda que você tenha conhecimento destes tópicos:
- Servidores Video Communications Server (VCS) e Expressway
- Dispositivos de telepresença
- Chamada B2B (Business to Business, empresa para empresa)
- Implantações de colaboração
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software e hardware:
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Informações de Apoio
Expressões regulares são sequências de caracteres que definem padrões usados para corresponder strings em texto. Essas strings podem então ser modificadas ou preservadas em regras de pesquisa ou transformações; esses são os usos mais comuns de expressões regulares.
Tipos de expressões regulares
Expressões básicas
- Ponto (.) Corresponde a qualquer caractere único.
- Dígito (\d) Corresponde a qualquer dígito decimal único.
- Asterisco (*) Corresponde a 0 ou mais repetições do caractere ou expressão anterior.
- Sinal de adição (+) Corresponde a 1 ou mais repetições do caractere ou expressão anterior.
- O ponto de interrogação (?) corresponde a 0 ou 1 repetição do caractere ou expressão anterior.
- Chave {n} Corresponde a n repetições do caractere ou expressão anterior, por exemplo, (\d{3}) corresponde a qualquer cadeia de 3 dígitos.
- Intervalo de chaves {n,m} Corresponde n a m repetições do caractere ou expressão anterior, por exemplo, (\d{3,5}) corresponde a qualquer cadeia de 3, 4 ou 5 dígitos.
- Colchetes [...] Corresponde a um conjunto de caracteres especificados, eles podem ser especificados individualmente ou em um intervalo, por exemplo, [abc] corresponde aos caracteres a, b ou c.
- Para especificar um intervalo, use o caractere de hífen (-) entre o início e o fim do intervalo. Por exemplo, [a-z] corresponde a qualquer caractere alfabético.
- O uso de acento circunflexo (^) após o colchete de abertura inverte a correspondência; por exemplo, [^a-z] corresponde a qualquer caractere não alfabético.
- Parênteses (...) Agrupa um conjunto de caracteres correspondentes. Esses grupos podem ser referenciados posteriormente na ordem que usa os caracteres \n como parte de uma cadeia de caracteres de substituição.
- Pipe (|) Corresponde a uma expressão ou a uma expressão alternativa, por exemplo, (com|net) corresponde a uma das strings com ou net.
Outras expressões
- (?!...) Este é um olhar negativo para o futuro. Define uma subexpressão que não deve estar presente.
- %localdomains% Corresponde a todos os domínios SIP atualmente configurados no servidor.
Criar e testar padrões
Os servidores Expressway fornecem uma ferramenta para testar padrões sem alterações na configuração para evitar possíveis impactos comerciais durante a criação de novos itens.
Essa ferramenta pode ser encontrada na interface da Web do servidor Expressway, navegue para Manutenção > Ferramentas > Verificar padrão.
Ferramenta de Verificação de Padrão
- Apelido: A string a ser testada, pode ser o destino ou o URI (Uniform Resource Identifier) de registro. Essa string é comparada com a string padrão para testar uma correspondência.
- Tipo de padrão: essa configuração determina como a string de padrão é tratada quando um padrão é verificado. Regex é mais comumente usado.
- Exato: A string inteira deve corresponder exatamente ao caractere do alias para o caractere.
- Prefixo: A string deve aparecer no início do apelido.
- Sufixo: A string deve aparecer no final do alias.
- Regex: A cadeia de caracteres é tratada como uma expressão regular.
- String do padrão: o padrão com o qual o alias é comparado.
- Comportamento padrão: a ação executada em uma correspondência de padrão. Se uma modificação tiver que ser executada, uma nova caixa de texto será ativada para especificar a modificação.
- Divisão: Remove o prefixo ou sufixo correspondente do alias. Disponível apenas quando o tipo de padrão está definido como prefixo ou sufixo.
- Licença: nenhuma modificação é aplicada ao alias.
- Substituir: Substitui a parte correspondente do alias pelo texto na string de substituição.
- Adicionar Prefixo: Antecede o texto adicional ao apelido.
- Adicionar Sufixo: Anexa o texto adicional ao apelido.
Exemplos de Regex comumente usados
Curinga Corresponder Tudo
Esse padrão é amplamente usado quando nenhuma correspondência de padrão específica é necessária, mas uma regra de pesquisa ou transformação precisa ser considerada, a expressão regular (.*) corresponde a qualquer entrada, independentemente do formato ou comprimento. O ponto corresponde a qualquer caractere, e o asterisco é qualquer quantidade de repetições dessa expressão.
Exemplo 1 do Curinga Corresponder Tudo
O mesmo padrão é bem-sucedido independentemente da entrada do alias.
Exemplo 2 de Curinga Corresponder Tudo
Corresponder domínios locais e não locais
Isso é normalmente usado para corresponder um padrão com um destino de um dos domínios locais configurados no servidor e manter a chamada roteada localmente em vez de roteá-la para a Internet. O regex %localdomains% pode ser usado como um sufixo ou como a segunda parte do padrão regex.
Para configurar domínios locais, navegue até Configuration > Domains.
Domínios configurados localmente
A correspondência de padrão falha em qualquer domínio que não seja o configurado localmente.
Falha de Correspondência de Domínios Locais
E é bem-sucedido para todos os domínios configurados localmente.
Êxito na correspondência de domínios locais
A aparência negativa à frente desse padrão (?!.*@%localdomains%) também pode ser usada para o resultado oposto. Isso significa que qualquer alias que não seja dos domínios locais é uma correspondência bem-sucedida.
Lookahead negativo para domínios locais
Corresponder Extensões de Domínio Diferentes
Esse padrão é comumente usado quando a empresa possui um domínio com vários ramais e permite que um deles seja chamado, mas para o gerenciamento de chamadas, eles precisam ser normalizados antes de considerar as regras de pesquisa.
Isso geralmente é realizado através de transformações com o uso da expressão regular pipe (|).
Exemplo 1 de extensão de domínio diferente
O mesmo padrão corresponde ao domínio com qualquer uma das duas extensões de domínio, mas o converte na extensão normalizada escolhida como resultado.
Exemplo 2 de extensão de domínio diferente
Corresponder Padrões De Fraude De Chamada Tarifada
A semelhança entre as chamadas fraudulentas de chamada tarifada geralmente reside na quantidade de dígitos discados, as chamadas internacionais exigem um código de país seguido pelo número do telefone sendo chamado, o que faz com que essas chamadas tenham pelo menos 7 dígitos. Também é comum que os planos de discagem internos dentro das empresas tenham entre 4 e 6 dígitos.
Isso cria uma diferença clara que pode ser usada para realizar ações diferentes para qualquer um desses tipos de chamada. Usando o regex de contagem de dígitos, você pode especificar que ação executar com cada chamada.
Exemplo 1 de contagem de dígitos
Esse padrão corresponde a qualquer alias entre 7 e 15 dígitos apenas. Menos dígitos não resultam em uma correspondência.
Exemplo 2 de contagem de dígitos
Qualquer outro caractere além dos dígitos também resulta em uma falha.
Exemplo 3 de contagem de dígitos
Grupos e padrões de referência
Grupos e referências são usados junto com padrões regex para modificar algumas seções de um alias enquanto preserva outros. Isso é útil ao adicionar ou remover prefixos ou modificar domínios. Os grupos são designados na seção string de padrão e as referências são feitas por ordem no campo string de substituição.
Exemplo 1 de grupos e referências
Neste exemplo, há uma correspondência literal com @cisco.com e a string testuri é correspondida e agrupada pela correspondência all regex.
A referência \1 na cadeia de caracteres de substituição retorna o primeiro grupo dentro da cadeia de caracteres padrão, que se vincula ao URI, independentemente do URI, e, portanto, o URI é conservado no alias do resultado.
O domínio não é referenciado na sequência de caracteres substituída, em vez disso, é substituído por internaldomain, isso pode ser visto no alias do resultado.
Os grupos também podem ser usados para reordenar o URI, pois isso permite planos de discagem flexíveis.
Exemplo 2 de grupos e referências
Neste exemplo, há um alias com o formato de 5 dígitos, seguido por um ponto e outro dígito, seguido pelo domínio.
Na string padrão, há diferentes grupos e seções que podem ser analisados separadamente.
- Grupo 1, o padrão (\d{5}) corresponde a quaisquer 5 dígitos no início da cadeia de caracteres.
- A expressão regular (\.) corresponde a um ponto literal, o que significa que o alias original requer um ponto após os 5 dígitos iniciais.
- Grupo 2, o padrão (\d) corresponde a um único dígito.
- Grupo 3, o padrão literal (@cisco.com) corresponde apenas a essa sequência de caracteres, isso pode ser modificado para incluir vários domínios ou qualquer sequência de caracteres após as correspondências anteriores.
Quando o alias corresponder à string padrão, a ação fará com que ela seja substituída pela string de substituição.
A string de substituição faz referência aos grupos anteriores em uma nova ordem.
- A referência \2 retorna o grupo 2, este é o único dígito após o ponto e antes do domínio.
- A referência \1 chama de volta o grupo 1; esses são os cinco primeiros dígitos do alias.
- A referência \3 retorna o grupo 3, esta é a seção de domínio do alias
- O ponto nunca é referenciado nem faz parte de qualquer grupo, portanto, não faz parte do alias result.
O alias resulta nos mesmos dígitos que o alias original, mas com o dígito que estava originalmente após o ponto, no início do alias.
O ponto que separou os 5 dígitos e o único dígito não faz mais parte do alias, o domínio é preservado.
Nem todos os grupos precisam ser referenciados, um grupo que não é referenciado não faz parte do alias do resultado.
Informações Relacionadas
Suporte técnico e downloads da Cisco