Compartir a través de


Expresiones regulares en reglas de transporte

Se aplica a: Exchange Server 2010

Última modificación del tema: 2009-11-05

Puede usar expresiones regulares en los predicados de regla admitidos por Exchange 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.

¿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 simple es el título de un documento que su organización no desea divulgar, por ejemplo, Ventas anuales previstas.doc. Un dato en un correo electrónico debe coincidir exactamente con una expresión simple para cumplir una condición o excepción en las reglas de transporte.

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 el Shell de administración de Exchange se pueden usar expresiones regulares en cualquier predicado que acepte los Patterns de predicado correctamente. 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. 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)* identificaría las siguientes cadenas: 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 ( ) )
  • Carácter de intercalación ( ^ )
  • 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.

También se puede usar este carácter en conjunción con el carácter de signo de dólar ( $ ) para especificar la búsqueda de una cadena exacta. Por ejemplo, ^kim@contoso.com$ solo identifica kim@contoso.com y no identifica nada más, como kim@contoso.com.au.

$

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.

Este carácter también se puede usar en conjunción con el carácter de intercalación ( ^ ) para especificar la búsqueda de una cadena exacta. Por ejemplo, ^kim@contoso.com$ solo identifica kim@contoso.com y no identifica nada más, como chris@sales.contoso.com.

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 ó 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