Punti di ancoraggio
I punti di ancoraggio consentono di fissare un'espressione regolare all'inizio o alla fine di una riga o di una stringa di input. Consentono inoltre di creare espressioni che corrispondono all'inizio, alla fine o alla parte interna di una parola.
Nell'espressione er\b, ad esempio, \b corrisponde a un confine di parola. L'espressione corrisponde a "er" in "never" ma non a "er" in "verb".
Funzionamento dei punti di ancoraggio
Nella tabella riportata di seguito viene fornito un elenco dei punti di ancoraggio di espressioni regolari e dei relativi significati.
Carattere |
Descrizione |
---|---|
^ |
Corrisponde alla posizione all'inizio della stringa di input. Se il carattere m (ricerca su più righe) è incluso tra i flag, ^ corrisponde anche alla posizione che segue \n o \r. |
$ |
Corrisponde alla posizione alla fine della stringa di input. Se il carattere m (ricerca su più righe) è incluso tra i flag, $ corrisponde anche alla posizione che precede \n o \r. |
\b |
Corrisponde a un inizio o a una fine di parola, ovvero alla posizione tra una parola e uno spazio. |
\B |
Corrisponde a caratteri che non costituiscono un inizio o una fine di parola. |
Non è possibile utilizzare un quantificatore con un punto di ancoraggio. Poiché non possono essere presenti più posizioni subito prima o dopo un carattere di nuova riga o un confine di parola, espressioni come ^* non sono ammesse.
Per ottenere una corrispondenza con il testo all'inizio di una riga di testo, utilizzare il carattere ^ all'inizio dell'espressione regolare. Questo utilizzo di ^ non deve essere confuso con l'utilizzo all'interno di un'espressione tra parentesi quadre.
Per ottenere una corrispondenza con il testo alla fine di una riga di testo, utilizzare il carattere $ alla fine dell'espressione regolare.
Se si desidera utilizzare punti di ancoraggio per la ricerca di titoli di capitoli, la seguente espressione regolare corrisponde a un titolo di capitolo contenente non più di due cifre successive, riportato all'inizio di una riga:
/^Chapter [1-9][0-9]{0,1}/
Un titolo di capitolo effettivo non solo è riportato all'inizio di una riga, ma rappresenta anche l'unico testo contenuto nella riga. Viene inoltre riportato all'inizio della riga e alla fine della stessa riga. L'espressione riportata di seguito garantisce che la corrispondenza specificata sia costituita soltanto da capitoli e non da riferimenti incrociati. Per ottenere questo risultato viene creata un'espressione regolare in grado di ottenere una corrispondenza soltanto all'inizio e alla fine di una riga di testo.
/^Chapter [1-9][0-9]{0,1}$/
La procedura per ottenere una corrispondenza con un inizio o una fine di parola risulta leggermente diversa, ma arricchisce le espressioni regolari di una funzionalità estremamente importante. Un inizio o una fine di una parola rappresenta la posizione tra una parola e uno spazio. In tutte le altre posizioni si trovano caratteri che non costituiscono un inizio o una fine di parola. La seguente espressione corrisponde ai primi tre caratteri della parola "Chapter", poiché i caratteri sono riportati dopo un confine di parola:
/\bCha/
La posizione dell'operatore \b riveste un'importanza critica. Se si trova all'inizio di una stringa di cui si desidera ottenere una corrispondenza, questa viene ricercata all'inizio della parola. Se si trova alla fine della stringa, la corrispondenza viene ricercata alla fine della parola. La seguente espressione corrisponde ad esempio alla stringa "ter" nella parola "Chapter" perché viene riportata prima di un confine di parola:
/ter\b/
La seguente espressione corrisponde invece alla stringa "apt" in "Chapter", ma non in "aptitude":
/\Bapt/
La stringa "apt" non rappresenta un confine di parola in "Chapter", mentre rappresenta un confine di parola in "aptitude". Per l'operatore \B, corrispondente ai caratteri che non costituiscono un inizio o una fine di parola, la posizione non è importante perché la corrispondenza non è relativa all'inizio o alla fine di una parola.