Expresiones regulares en reglas de transporte

 

Se aplica a: Exchange Server 2010 SP2, Exchange Server 2010 SP3

Última modificación del tema: 2016-03-18

Puede usar expresiones regulares en los predicados de regla admitidos por MicrosoftExchange Server 2010 para que coincidan con los patrones de texto en distintas partes del mensaje (como los encabezados de los mensajes, remitente, destinatario, asunto  y cuerpo del mensaje). Las condiciones y las excepciones usan los predicados para determinar si se debe aplicar una determinada acción a un mensaje de correo electrónico.

Nota

Debido a las variaciones en los entornos del cliente, los Servicios de soporte técnico de Microsoft (CSS) no pueden participar en el desarrollo o en las pruebas de scripts personalizados de expresiones regulares ("RegEx scripts"). Para el desarrollo, pruebas y depuración de scripts personalizados de RegEX, los clientes de Office 365 necesitarán contar con los recursos internos de TI. Como alternativa, los clientes de Office 365 pueden elegir usar un recurso externo de consultoría como los Servicios de consultoría de Microsoft (MCS). Independientemente de los recursos de desarrollo de scripts, los ingenieros de soporte técnico de CSS EXO y EOP no están disponibles para ayudar a los clientes con consultas acerca de los scripts de RegEx personalizados.

¿Está buscando tareas de administración relacionadas con las reglas de transporte? Consulte Administración de reglas de transporte.

Contenido

Expresiones simples frente a expresiones regulares

Expresiones regulares en Exchange 2010

Creación de una regla de transporte que usa una expresión regular

Expresiones simples frente a expresiones regulares

Para comprender las expresiones regulares, primero debe comprender las expresiones simples. Una expresión simple representa un valor específico que desea que coincida exactamente en un mensaje. Los predicados que usan expresiones simples coinciden con palabras específicas o cadenas. Un ejemplo de una expresión sencilla es el título de un documento que su organización no desea que se distribuya fuera de ella, como por ejemplo, Previsión de ventas anuales.doc. Por tanto, para cumplir una condición o una excepción de las reglas de transporte, un dato de un mensaje de correo electrónico tendría que coincidir exactamente con una expresión simple.

Una expresión regular es una notación concisa y flexible que identifica patrones de texto en un mensaje. La notación está compuesta por dos tipos de caracteres básicos:

  • Caracteres literales   Texto que debe existir en la cadena de destino. Estos son caracteres normales, tal y como están escritos.

  • Metacaracteres   Uno o más caracteres especiales que no se interpretan literalmente. Estos indican cómo el texto puede variar en la cadena de destino.

De este modo, las expresiones regulares se pueden usar para analizar rápidamente mensajes de correo electrónico y encontrar patrones de textos específicos. Esto le permite detectar mensajes con un tipo de contenido específico, como números de seguridad social, números de patentes y teléfonos.

Para que una expresión simple pueda identificar un dato dinámico, tendría que contener todas las variaciones del dato que se busca, lo cual no sería un modo razonable de trabajar. En muchos casos, usar una expresión simple para tales aplicaciones se torna un desafío logístico e identificar un gran número de expresiones simples en el contenido del mensaje puede consumir muchos recursos. El uso de expresiones regulares generalmente es más eficaz. En lugar de especificar todas las variaciones posibles, se puede configurar el predicado de la regla de transporte a la búsqueda por un patrón de texto.

Expresiones regulares en Exchange 2010

En Shell de administración de Exchange se pueden usar expresiones regulares en los predicados que acepten la propiedad de predicado Patterns. En la Consola de administración de Exchange, puede usar expresiones regulares con cualquier condición o excepción que contenga las palabras con patrones de texto. Para obtener más información acerca de los predicados, consulte Predicados de reglas de transporte.

Advertencia

Debe comprobar detenidamente las expresiones regulares que cree para asegurarse de que, efectivamente, los resultados que devuelven son los esperados. Una configuración incorrecta, con sus consiguientes resultados inesperados, podría dar lugar a un comportamiento no deseado de la regla de transporte. Esto puede generar acciones no deseadas en los mensajes y en su contenido, dando como resultado una potencial pérdida de información cuando se usan acciones como rechazar o rebotar un mensaje. Asimismo, las expresiones regulares complejas pueden afectar al rendimiento de transporte de correo. De aquí que sea recomendable comprobar las expresiones regulares en un entorno de prueba antes de ponerlas en producción.

La siguiente tabla incluye todas las cadenas de patrones que se pueden usar para crear expresiones regulares de identificación de patrones en Exchange 2010.

Cadenas de patrones

Cadena de patrón Descripción

\S

La cadena de patrón \S identifica cualquier carácter que no sea espacio.

\s

La cadena de patrón \s identifica cualquier carácter de espacio en blanco.

\D

La cadena de patrón \D identifica cualquier dígito que no es numérico.

\d

La cadena de patrón \d identifica cualquier dígito numérico.

\w

La cadena de patrón \w identifica cualquier carácter Unicode categorizado como una letra o dígito decimal.

\W

La cadena de patrón \W identifica cualquier carácter Unicode no categorizado como una letra o dígito decimal.

|

El carácter de barra vertical ( | ) realiza una función OR.

*

El carácter de asterisco ( * ) identifica la ausencia o presencia de instancias del carácter anterior. Por ejemplo, ab*c identificaría las siguientes cadenas: ac, abc, abbbbc.

( )

Los paréntesis hacen la función de delimitadores de agrupamiento. Por ejemplo, a(bc)* coincide con las cadenas siguientes: a, abc, abcbc, abcbcbc, y así sucesivamente.

\

Una barra diagonal inversa se usa como carácter de escape antes de un carácter especial. Los caracteres especiales son caracteres usados en las cadenas de patrones:

  • Barra diagonal inversa ( \ )

  • Barra vertical partida ( | )

  • Asterisco ( * )

  • Paréntesis de apertura ( ( )

  • Paréntesis de cierre ( ) )

  • Acento circunflejo ( ^ )

  • Signo de dólar ( $ )

Por ejemplo, si desea identificar una cadena que contenga (525), escribiría \(525\).

^

El carácter de intercalación ( ^ ) indica que la cadena de patrón que sigue al carácter de intercalación debe aparecer al principio de la cadena de texto que se intenta identificar.

Por ejemplo, ^fred@contoso identificaría fred@contoso.com y fred@contoso.co.uk, pero no alfred@contoso.com.

$

El carácter de signo de dólar ( $ ) indica que la cadena de patrón que le precede debe existir al final de la cadena de texto que se intenta identificar.

Por ejemplo, contoso.com$ identificaría adam@contoso.com y kim@research.contoso.com, pero no identificaría kim@contoso.com.au.

Construcción de expresiones regulares

Con la ayuda de la tabla anterior, puede crear una expresión regular que busque un determinado patrón de datos. De izquierda a derecha, examine cada carácter o grupo de caracteres presentes en los datos que desea identificar. Lea la descripción de cada cadena de patrón para determinar cómo se aplica a los datos que desea identificar. A continuación, determine qué cadena de patrón de la tabla representa el carácter o grupo de caracteres, y agregue dicha cadena de patrón a la expresión regular. Cuando haya terminado, tendrá una expresión regular totalmente construida.

En este ejemplo, de expresión regular se identifican los números de teléfono de Estados Unidos que tengan el formato 425 555-0100 y 425.555.0100.

425(\s|.)\d\d\d(-|.)\d\d\d\d

Podría agregar el formato (425) 555-0100, que usa paréntesis para identificar el prefijo. Este ejemplo de una expresión regular coincide con todos los tres formatos de números de teléfono.

\d\d\d((\s|.|-|\)|\)\s)\d\d\d(\s|.|-)\d\d\d\d

Puede analizar el ejemplo anterior del siguiente modo:

  • \d\d\d   Esta parte condiciona que lo primero que aparezca sean tres dígitos numéricos.

  • ((\s|.|-|\)|\)\s)   Esta parte requiere que exista un espacio, un punto o un guión tras el número de tres dígitos. Cada cadena de identificación de caracteres está contenida en los delimitadores de agrupamiento y está separada por el carácter de barra vertical. Esto significa que solamente uno de los caracteres especificados en los delimitadores de agrupamiento puede aparecer en esta ubicación de la cadena que se busca. Para el espacio entre el código de área y los tres dígitos siguientes, también se requieren paréntesis de cierre o paréntesis de cierre y espacio.

  • \d\d\d   Esta parte condiciona que lo siguiente que aparezca sean tres dígitos numéricos.

  • (\s|.|-)  Esta parte condiciona que aparezca un espacio, un punto o un guión tras el número de tres dígitos.

  • \d\d\d\d   Esta parte condiciona que sean cuatro dígitos numéricos los siguientes caracteres que aparezcan.

La expresión regular anterior coincidirá con los valores del siguiente ejemplo:

  • (425)555.0100

  • 425 555 0100

  • 425. 555-0100

  • (425) 555-0100

  • 425-555-0100

  • (425) 555-0100

Creación de una regla de transporte que usa una expresión regular

En este ejemplo, se crea una regla de transporte en el Shell que usa expresiones regulares que identifican números de seguridad social en el asunto de un mensaje de correo electrónico.

New-TransportRule -Name "Social Security Number Block Rule" -SubjectOrBodyMatchesPatterns '\d\d\d-\d\d-\d\d\d\d' -RejectMessageEnhancedStatusCode "5.7.1" -RejectMessageReasonText "This message has been rejected because of content restrictions" 

En este ejemplo, se puede ver la nueva regla de transporte.

Get-TransportRule "Social Security Number Block Rule" | Format-List

 © 2010 Microsoft Corporation. Reservados todos los derechos.