Espressioni regolari
Le espressioni regolari nel sistema vengono usate per verificare che una certa condizione sia vera o falsa.
Ad esempio verificare se usare una certa rotta piuttosto che un’altra.
Ogni espressione deve iniziare con il carattere “^” e finire con il carattere “$”.
Le espressioni si possono dividere in blocchi usando le parantesi tonde e il contenuto di ogni blocco si può andare a leggere in seguito, usando il carattere “$” seguito da un numero corrispondente al livello di blocco. Il livello minimo è 1.
E’ possibile usare il carattere “|” per rappresentare la O (in inglese OR), ad esempio ci interessano le cifre 5 o 6, e quindi scriviamo “5|6”.
Un altro elemento che ci viene in aiuto sono gli intervalli di numeri, dove tra parentesi quadre è possibile definire un intervallo di cifre valide divise con un trattino, ad esempio la precedente condizione si può anche scrivere così: [5-6]
Lista di stringhe speciali e i relativi valori
- “.” Un carattere o numero con qualsia valore;
- “*” Infinite occorrenze di un carattere o numero, è necessario che sia preceduto dal carattere o numero di riferimento;
- “\d” Una qualsiasi cifra;
- “[0-9]” Una qualsiasi cifra da 0 a 9;
- “+” Il simbolo più, che va preceduto da un “\” perché è un carattere speciale;
- “{6}” Definisce il numero di occorrenze riferite all’espressione precedente, in questo caso 6.
La documentazione ufficiale in lingua inglese è presente al seguente indirizzo: https://freeswitch.org/confluence/display/FREESWITCH/Regular+Expression
Esempi pratici
Prendi tutto: | ^(.*)$ |
Prendi una cifra: | ^(\d)$ |
Prendi due cifre: | ^(\d\d)$ oppure ^(\d{2})$ |
Prendi tutti i numeri da 500 a 599, ovvero 5xx: | ^(5\d\d)$ oppure ^(5\d{2})$ |
Prendi tutti i numeri da 500 a 699, ovvero 5xx e 6xx: | ^(5\d\d|6\d\d)$ oppure ^(5\d{2}|6\d{2})$ |
Rimozione del prefisso: | ^0039(.)$ oppure ^+39(.)$ |
Funziona perché, come precedentemente detto, si può prelevare il contenuto di un blocco (una espressione tra parentesi) e lasciando fuori dalle parentesi il prefisso, noi andiamo a prendere solo il numero principale che ci interessa.
Le espressioni regolari solitamente vanno inserite nella “condition” e i relativi valori si possono poi utilizzare nelle varie “action” usando $1, $2, etc in base ai livelli di parantesi usate, Es:
^((5|6)\d\d)$ se usata in corrispondenza di un 511, produce un $1 con valore 511 e un $2 con valore 5.
Esempio gestione paragonabile alle rotte entranti per la selezione passante del PBX Matra:
nella “condition” va inserito ^0598211(\d\d)$ e nell’ultimo “action” va inserito “5$1 XML esempionomeazienda.nexiop.net”, di conseguenza tutta la passante viene girata con mappatura 1:1 alla numerazione 500, es: 059821134 arriverà su 534.