Espressioni regolari

Utilizzate i metodi della classe String, ad esempio indexOf() , substr() o substring() , anziché un'espressione regolare per le operazioni di ricerca ed estrazione di base delle stringhe.

Per eseguire alcune operazioni è possibile utilizzare sia un'espressione regolare che i metodi della classe String. Per determinare se una stringa contiene un'altra stringa, ad esempio, potete utilizzare il metodo String.indexOf() o un'espressione regolare. Il metodo della classe String, tuttavia, viene eseguito più rapidamente dell'espressione regolare equivalente e non richiede la creazione di un altro oggetto.

Utilizzate un gruppo di non cattura (“ (?:xxxx) ”) anziché un gruppo (“ (xxxx) ”) in un'espressione regolare se desiderate raggruppare gli elementi senza isolare i contenuti del gruppo nel risultato.

Nelle espressioni regolari di moderata complessità, spesso alcune parti dell'espressione vengono raggruppate. Nel seguente modello di espressione regolare, ad esempio, le parentesi creano un gruppo per il testo “ab”. Di conseguenza, il quantificatore “+” viene applicato al gruppo anziché a un solo carattere:

/(ab)+/

Per impostazione predefinita, i contenuti di ogni gruppo vengono “catturati”. I contenuti di ogni gruppo del modello possono essere inclusi nel risultato prodotto dall'esecuzione dell'espressione regolare. La cattura dei risultati dei gruppi richiede una quantità superiore di tempo e memoria perché vengono creati degli oggetti per contenere questi risultati. In alternativa potete utilizzare la sintassi dei gruppi di non cattura includendo un punto interrogativo e i due punti dopo la parentesi aperta. Questa sintassi specifica che i caratteri si comportano come un gruppo ma non vengono catturati nei risultati:

/(?:ab)+/

La sintassi dei gruppi di non cattura è più rapida e utilizza una quantità di memoria inferiore rispetto alla sintassi dei gruppi standard.

Utilizzate un modello di espressione regolare alternativo se un'espressione regolare ha prestazioni scadenti.

A volte è possibile utilizzare più di un modello di espressione regolare per testare o individuare lo stesso modello di testo. Alcuni modelli vengono eseguiti più rapidamente di altri per vari motivi. Se determinate che un'espressione regolare rallenta l'esecuzione del codice più di quanto sia necessario, considerate la possibilità di utilizzare modelli di espressione regolare alternativi che consentano di ottenere lo stesso risultato. Provate questi modelli alternativi per individuare quello più rapido.