Condividi tramite


Espressioni regolari usate nelle regole di trasporto

SI APPLICA A:yes-img-162016 yes-img-192019 yes-img-seSubscription Edition

È possibile usare espressioni regolari nei predicati delle regole di trasporto di Microsoft Exchange Server 2016 e 2019 per trovare la corrispondenza con i modelli di testo in diverse parti di un messaggio, ad esempio intestazioni di messaggio, mittente, destinatari, oggetto messaggio e corpo. I predicati vengono utilizzati dalle condizioni e dalle eccezioni per determinare l'opportunità o meno di applicare un'azione configurata a un messaggio di posta elettronica.

Nota

A causa delle variazioni negli ambienti dei clienti, il Servizio Supporto Tecnico Clienti Microsoft (CSS) non può partecipare allo sviluppo o al test di script di espressioni regolari personalizzati ("script RegEx"). Per lo sviluppo, il test e il debug di script personalizzati RegEX, Office 365 clienti dovranno affidarsi alle risorse IT interne. In alternativa, i clienti di Office 365 possono scegliere di usare una risorsa di consulenza esterna, come ad esempio Microsoft Consulting Services (MCS). Indipendentemente dalla risorsa di sviluppo di script, i tecnici del supporto CSS EXO ed EOP non sono disponibili per assistere i clienti nelle richieste di script RegEx personalizzate.

Per informazioni sulle attività di gestione correlate alle regole di trasporto, Vedere Gestione delle regole di trasporto.

Sommario

Sezioni dell'articolo:

Espressioni semplici ed espressioni regolari

Per comprendere le espressioni regolari, è necessario innanzitutto comprendere le espressioni semplici. Un'espressione semplice è un valore specifico che si desidera sia presente esattamente così in un messaggio. Predicati mediante espressioni semplici corrispondono a parole specifiche o stringhe. Un esempio di espressione semplice è il titolo di un documento che l'organizzazione non vuole distribuire all'esterno dell'organizzazione, ad esempio Yearly Sales Forecast.doc. Una parte di dati in un messaggio di posta elettronica deve corrispondere esattamente a un'espressione semplice per soddisfare una condizione o un'eccezione nelle regole di trasporto.

Una espressione regolare è una notazione concisa e flessibile che consente di trovare schemi di testo in un messaggio. La notazione è composta da due tipi di carattere di base:

  • Caratteri letterali: testo che deve esistere nella stringa di destinazione. Questi caratteri sono caratteri normali, come tipizzati.
  • Metacaratteri: uno o più caratteri speciali che non vengono interpretati letteralmente. Questi caratteri indicano come il testo può variare nella stringa di destinazione.

È possibile usare espressioni regolari per analizzare rapidamente i messaggi di posta elettronica per trovare modelli di testo specifici. Queste espressioni consentono di rilevare i messaggi con tipi specifici di contenuto, ad esempio i numeri di previdenza sociale (SSN), i numeri di brevetto e i numeri di telefono.

Non è possibile associare questi dati a una espressione semplice in quanto per quest'ultima è necessario specificare ogni possibile variazione del valore che si desidera individuare. In molti casi, l'uso di espressioni semplici per tali applicazioni diventa una sfida logistica e la corrispondenza di un numero elevato di espressioni semplici nel contenuto del messaggio può essere a elevato utilizzo di risorse. L'uso di espressioni regolari è più efficiente. Invece di specificare tutte le possibili varianti, è possibile configurare il predicato della regola di trasporto per la ricerca di un modello di testo.

Espressioni regolari in Exchange Server 2016 e 2019

In Exchange Management Shell è possibile usare espressioni regolari in qualsiasi predicato che accetta la proprietà del predicato Patterns . Nel Exchange Management Console è possibile usare espressioni regolari con qualsiasi condizione o eccezione che contiene le parole con modelli di testo. Per ulteriori informazioni sui predicati, vedere Transport Rule Predicates.

Avviso

È necessario testare attentamente le espressioni regolari che si costruiscono per assicurarsi che producano i risultati previsti. Una espressione regolare non correttamente configurata potrebbe produrre corrispondenze non previste e causare un comportamento anomalo nelle regole di trasporto. Queste implicazioni possono comportare l'esecuzione di azioni indesiderate sui messaggi e sul contenuto del messaggio, causando potenzialmente la perdita di dati quando vengono usate azioni come il rifiuto o il rimbalzo di un messaggio. Inoltre, espressioni regolari complesse possono influire sulle prestazioni del trasporto della posta elettronica. È opportuno testare le espressioni regolari in un ambiente di prova prima di implementarle nell'ambiente di produzione.

Nella tabella seguente sono elencate le stringhe di modello che è possibile usare per creare un'espressione regolare corrispondente ai criteri in Exchange Server 2016 e 2019:

Stringa modello Descrizione
\S La stringa dello schema \S corrisponde a qualsiasi singolo carattere eccetto allo spazio.
\s La stringa dello schema \s corrisponde a un qualsiasi spazio singolo.
\D La stringa dello schema \D corrisponde a qualsiasi cifra non numerica.
\d La stringa dello schema \d corrisponde a qualsiasi cifra numerica singola.
\w La stringa del modello \w corrisponde a qualsiasi singolo carattere Unicode categorizzato come lettera o cifra decimale.
\W La stringa dello schema \W corrisponde a qualsiasi singolo carattere Unicode non classificato come lettera o cifra decimale.
* Il carattere di asterisco ( * ) corrisponde a zero o più istanze del carattere che lo precede. Ad esempio, ab*c corrisponde alle stringhe seguenti: ac, abc e abbbbc.
( ) Le parentesi fungono da delimitatori di raggruppamenti. Ad esempio, a(bc)* corrisponde alle stringhe seguenti: a, abc, abcbc, abcbcbc e così via……
\ Una barra rovesciata viene utilizzata come carattere di escape prima di un carattere speciale. I caratteri speciali sono caratteri usati nelle stringhe di criteri: barra rovesciata ( \ ); Pipa; Asterisco ( * ); Parentesi aperta ( ( ); Parentesi di chiusura ( ) ); Cursore ( ^ ); Simbolo di dollaro ( $ ). Ad esempio, se si vuole trovare una corrispondenza con una stringa che contiene (525), digitare (525).
^ L'accento circonflesso ( ^ ) indica che la stringa dello schema che lo segue deve trovarsi all'inizio della stringa di testo per cui si esegue la corrispondenza. Ad esempio, ^fred@contoso corrisponde fred@contoso.com a e fred@contoso.co.uk ma non alfred@contoso.coma .
$ Il carattere del segno $ di dollaro indica che la stringa del modello precedente deve esistere alla fine della stringa di testo corrispondente. Ad esempio, contoso.com$ corrisponde adam@contoso.com a e kim@research.contoso.com, ma non corrisponde kim@contoso.com.aua .

Costruzione di espressioni regolari

Utilizzando la tabella precedente, è possibile creare un'espressione regolare che corrisponde al modello dei dati che per cui si desidera eseguire la corrispondenza. Esaminare ciascun carattere o gruppo di caratteri contenuti nei dati per cui si desidera eseguire la corrispondenza procedendo da sinistra verso destra. Leggere la descrizione di ciascuna stringa dello schema per determinare il modo in cui viene applicata ai dati per cui si esegue la corrispondenza. Determinare quindi quale stringa dello schema presente nella tabella rappresenta il carattere o il gruppo di caratteri e aggiungerla all'espressione regolare. Al termine, si dispone di un'espressione regolare completamente costruita.

In questo esempio, l'espressione regolare che segue, corrisponde ai numeri telefonici utilizzati nel Nord America nei formati 425 555-0100 e 425.555.0100:

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

È possibile elaborare questo esempio aggiungendo il formato (425) 555-0100, dove le parentesi delimitano il prefisso. In questo esempio, un'espressione regolare corrisponde a tutti e tre i formati di numero di telefono.

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

L'esempio precedente può essere analizzato come segue:

  • \d\d\d: questa parte richiede che vengano visualizzate per prime esattamente tre cifre numeriche.
  • ((\s|.|-|)|)\s): questa parte richiede che esista uno spazio, un punto o un trattino dopo il numero a tre cifre. Ciascuna stringa corrispondente a un carattere è contenuta nei delimitatori di raggruppamenti ed è separata dal carattere barra verticale. Questa separazione significa che solo uno dei caratteri specificati all'interno dei delimitatori di raggruppamento può esistere in questa posizione nella stringa corrispondente. Per la separazione tra il prefisso e le tre cifre successive, cerca anche una parentesi chiusa o parentesi chiuse e spazio.
  • \d\d\d: questa parte richiede che vengano visualizzate esattamente tre cifre numeriche.
  • (\s|.|-): questa parte richiede l'esistenza di uno spazio, un punto o un trattino dopo il numero a tre cifre.
  • \d\d\d\d: questa parte richiede che vengano visualizzate esattamente quattro cifre numeriche.

L'espressione regolare sopra riportata corrisponderà ai valori di esempio riportati di seguito:

  • (425)555.0100
  • 425 555 0100
  • 425 555 0100
  • (425) 555-0100
  • 425-555-0100
  • (425) 555-0100

Creazione di una regola di trasporto che usa un'espressione regolare

In questo esempio viene creata una regola di trasporto in PowerShell che usa espressioni regolari per trovare la corrispondenza con gli SSN nell'oggetto di un messaggio di posta elettronica.

   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"

In questo esempio si può visualizzare la nuova regola di trasporto.

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