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.