Introducción
Este documento describe cómo funcionan las expresiones regulares (regex) y cómo probarlas en los servidores de Expressway.
Prerequisites
Requirements
Cisco recomienda que tenga conocimiento sobre estos temas:
- Servidores de comunicaciones de vídeo (VCS) y Expressway
- Dispositivos de Telepresence
- Llamadas entre empresas (B2B)
- Implementaciones de colaboración
Componentes Utilizados
La información que contiene este documento se basa en las siguientes versiones de software y hardware.
La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.
Antecedentes
Las expresiones regulares son secuencias de caracteres que definen patrones utilizados para hacer coincidir cadenas en texto. Estas cadenas se pueden modificar o conservar en reglas de búsqueda o transformaciones, que son los usos más comunes de las expresiones regulares.
Tipos de expresiones regulares
Expresiones básicas
- Punto (.) Coincide con cualquier carácter individual.
- El dígito (\d) coincide con cualquier dígito decimal.
- Asterisco (*) Coincide con 0 o más repeticiones del carácter o expresión anterior.
- Signo más (+) Coincide con 1 o más repeticiones del carácter o expresión anterior.
- El signo de interrogación (?) coincide con 0 o 1 repetición del carácter o expresión anterior.
- La llave {n} coincide con n repeticiones del carácter o expresión anterior; por ejemplo, (\d{3}) coincide con cualquier cadena de 3 dígitos.
- El intervalo de llaves {n,m} coincide con las repeticiones de n a m del carácter o expresión anterior; por ejemplo, (\d{3,5}) coincide con cualquier cadena de 3, 4 o 5 dígitos.
- Corchetes [...] Coincide con un conjunto de caracteres especificados, que se pueden especificar individualmente o en un intervalo; por ejemplo, [abc] coincide con los caracteres a, b o c.
- Para especificar un intervalo, utilice el guión (-) entre el principio y el final del intervalo; por ejemplo, [a-z] coincide con cualquier carácter alfabético.
- El uso del símbolo de intercalación (^) después de que el corchete abierto invierte la coincidencia; por ejemplo, [^a-z] coincide con cualquier carácter no alfabético.
- Paréntesis (...) Agrupa un conjunto de caracteres coincidentes. Posteriormente, se puede hacer referencia a estos grupos en orden utilizando los caracteres \n como parte de una cadena de reemplazo.
- Tubo (|) Coincide con una expresión o una expresión alternativa; por ejemplo, (com|net) coincide con cualquiera de las cadenas com o net.
Otras expresiones
- (?!...) Esta es una mirada negativa hacia adelante. Define una subexpresión que no debe estar presente.
- %localdomains% Coincide con todos los dominios SIP configurados actualmente en el servidor.
Crear y probar patrones
Los servidores de Expressway proporcionan una herramienta para probar patrones sin cambios en la configuración para evitar un posible impacto empresarial al crear nuevos elementos.
Esta herramienta se puede encontrar en la interfaz web del servidor de Expressway, navegue hasta Mantenimiento > Herramientas > Verificar patrón.
Herramienta Patrón de comprobación
- Alias: Cadena que se va a probar; puede ser el identificador uniforme de recursos (URI) de registro o de destino. Esta cadena se compara con la cadena de patrón para probar una coincidencia.
- Tipo de patrón: esta configuración determina cómo se trata la cadena de patrón cuando se marca un patrón. Regex es el más comúnmente utilizado.
- Exacto: la cadena completa debe coincidir exactamente con el carácter de alias del carácter.
- Prefijo: la cadena debe aparecer al principio del alias.
- Sufijo: la cadena debe aparecer al final del alias.
- Regex: la cadena se trata como una expresión regular.
- Cadena de patrón: patrón con el que se compara el alias.
- Comportamiento de patrón: acción que se ejecuta en una coincidencia de patrón. Si se va a ejecutar una modificación, se habilitará un nuevo cuadro de texto para especificar la modificación.
- Quitar: quita el prefijo o sufijo coincidente del alias. Sólo está disponible cuando el tipo de patrón está definido como prefijo o sufijo.
- Dejar: no se aplica ninguna modificación al alias.
- Reemplazar: sustituye la parte coincidente del alias por el texto de la cadena de reemplazo.
- Agregar prefijo: agrega el prefijo al alias.
- Añadir sufijo: añade el texto adicional al alias.
Ejemplos de Regex de uso común
Comodín Match Everything
Este patrón se utiliza ampliamente cuando no se requiere una coincidencia de patrón específico pero se debe considerar una regla de búsqueda o transformación, la expresión regular (.*) coincide con cualquier entrada independientemente del formato o la longitud. El punto coincide con cualquier carácter y el asterisco es cualquier cantidad de repeticiones de esa expresión.
Ejemplo 1 del comodín Coincidir con todo
El mismo patrón se ejecuta correctamente independientemente de la entrada de alias.
Ejemplo de comodín Coincidir con todo 2
Hacer coincidir dominios locales y no locales
Esto se usa comúnmente para hacer coincidir un patrón con un destino de uno de los dominios locales configurados en el servidor y mantener la llamada enrutada localmente en lugar de enrutarla a Internet. El regex %localdomains% se puede utilizar como sufijo o como segunda parte del patrón de regex.
Para configurar dominios locales, navegue hasta Configuration > Domains.
Dominios configurados localmente
La coincidencia de patrones falla para cualquier dominio que no sea el configurado localmente.
Fallo de coincidencia de dominios locales
Y funciona correctamente para cualquier dominio configurado localmente.
Coincidencia correcta de dominios locales
El aspecto negativo delante de este patrón (?!.*@%localdomains%) también se puede utilizar para el resultado opuesto. Esto significa que cualquier alias que no sea el dominio local es una coincidencia exitosa.
Mirada hacia delante negativa para dominios locales
Coincidir con extensiones de dominio diferentes
Este patrón se usa comúnmente cuando la compañía posee un dominio con múltiples extensiones y permite llamar a cualquiera de ellos, pero para la administración de llamadas, estos deben normalizarse antes de considerar reglas de búsqueda.
Esto se consigue normalmente mediante transformaciones con el uso de la expresión regular pipe (|).
Ejemplo 1 de Extensión de Dominio Diferente
El mismo patrón coincide con el dominio con cualquiera de las dos extensiones de dominio, pero lo convierte en la extensión normalizada elegida como resultado.
Ejemplo 2 de extensión de dominio diferente
Coincidir con patrones de fraude de peaje
El rasgo común entre las llamadas fraudulentas de pago reside a menudo en la cantidad de dígitos marcados, las llamadas internacionales requieren un código de país seguido del número de teléfono al que se llama, lo que hace que estas llamadas tengan al menos 7 dígitos. También es común que los planes de marcación interna dentro de las empresas tengan entre 4 y 6 dígitos.
Esto crea una clara diferencia que se puede utilizar para realizar diferentes acciones para cualquiera de estos tipos de llamadas. Mediante el regex de recuento de dígitos, puede especificar la acción que se llevará a cabo con cada llamada.
Ejemplo 1 de recuento de dígitos
Este patrón sólo coincide con cualquier alias de entre 7 y 15 dígitos. Menos dígitos no dan como resultado una coincidencia.
Ejemplo 2 de recuento de dígitos
Cualquier otro carácter además de los dígitos también resulta en una falla.
Ejemplo 3 de recuento de dígitos
Grupos y patrones de referencia
Los grupos y las referencias se utilizan junto con los patrones de expresiones regulares para modificar algunas secciones de un alias mientras se conservan otras. Esto es útil cuando se agregan o eliminan prefijos o se modifican dominios. Los grupos se designan en la sección de cadenas de patrón y las referencias se realizan por orden en el campo de cadena de reemplazo.
Ejemplo 1 de grupos y referencias
En este ejemplo, hay una coincidencia literal con @cisco.com y la cadena testuri coincide y se agrupa según el regex match all.
La referencia \1 en la cadena de reemplazo devuelve la llamada al primer grupo dentro de la cadena de patrón, que se vincula al URI, independientemente de cuál sea el URI y, por tanto, el URI se conserva en el alias de resultados.
No se hace referencia al dominio en la cadena reemplazada, sino que se reemplaza por internaldomain, esto se puede ver en el alias de resultados.
Los grupos también se pueden utilizar para reordenar el URI, ya que esto permite planes de marcación flexibles.
Ejemplo 2 de grupos y referencias
En este ejemplo, hay un alias con el formato de 5 dígitos, seguido de un punto y otro dígito, seguido por el dominio.
En la cadena de patrón, hay diferentes grupos y secciones que se pueden analizar por separado.
- Grupo 1, el patrón (\d{5}) coincide con 5 dígitos al principio de la cadena.
- La expresión regular (\.) coincide con un punto literal, esto significa que el alias original requiere un punto después de los 5 dígitos iniciales.
- Grupo 2, el patrón (\d) coincide con un solo dígito.
- Grupo 3, el patrón literal (@cisco.com) coincide sólo con esa secuencia de caracteres, que se puede modificar para incluir varios dominios o cualquier cadena después de las coincidencias anteriores.
Una vez que el alias coincide con la cadena de patrón, la acción hace que se reemplace por la cadena de reemplazo.
La cadena replace hace referencia a los grupos anteriores en un nuevo orden.
- La referencia \2 devuelve la llamada al grupo 2, que es el único dígito situado detrás del punto y antes del dominio.
- La referencia \1 devuelve la llamada al grupo 1; se trata de los primeros 5 dígitos del alias.
- La referencia \3 devuelve la llamada al grupo 3, esta es la sección de dominio del alias
- Nunca se hace referencia al punto ni forma parte de ningún grupo, por lo que no forma parte del alias de resultados.
El alias entonces da como resultado los mismos dígitos que el alias original pero con el dígito que estaba originalmente después del punto, al principio del alias.
El punto que separó los 5 dígitos y el único dígito, ya no es parte del alias, el dominio se conserva.
No es necesario hacer referencia a todos los grupos; un grupo al que no se hace referencia no forma parte del alias de resultados.
Información Relacionada
Soporte técnico y descargas de Cisco