Glob pattern: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Collegamenti esterni: Aggiunto il template "FOLDOC"
 
(9 versioni intermedie di 8 utenti non mostrate)
Riga 4:
 
==Sintassi==
In un ''glob pattern'' la maggior parte dei caratteri è vista in modo letterale (ad esempio "<ttcode>a</ttcode>" corrisponde ad "<ttcode>a</ttcode>", "<ttcode>main.c</ttcode>" corrisponde a "<ttcode>main.c</ttcode>"). Fanno eccezione a questa regola i [[Metacarattere|metacaratteri]]:
{| class="wikitable"
! Metacarattere
! Descrizione
|-
| '''<ttcode>*</ttcode>'''
| Rappresenta una sequenza di zero o più caratteri qualsiasi (quindi anche una sequenza vuota). Ad esempio, "<ttcode>abc*</ttcode>" trova corrispondenza in "<ttcode>abcde</ttcode>" ma anche in "<ttcode>abc</ttcode>" stesso.
|-
| '''<ttcode>?</ttcode>'''
| Rappresenta un singolo carattere qualsiasi, che però deve essere presente. Ad esempio, "<ttcode>ab?</ttcode>" trova corrispondenza in "<ttcode>abc</ttcode>" e in "<ttcode>ab1</ttcode>", ma non in "<ttcode>ab</ttcode>".
|-
| '''<ttcode>[''caratteri'']</ttcode>'''
|
Rappresenta un singolo carattere tra i ''caratteri'' specificati. Ad esempio "<ttcode>a[bB]c</ttcode>" trova corrispondenza in "<ttcode>abc</ttcode>" e "<ttcode>aBc</ttcode>".
 
Volendo specificare anche una parentesi quadra chiusa, occorre specificarla come primo carattere, ad esempio con "<ttcode>[]xyz]</ttcode>".
 
È possibile specificare intervalli di caratteri nella forma "<ttcode>''inizio''-''fine''</ttcode>", ad esempio "<ttcode>[a-z]</ttcode>" o "<ttcode>[0-9]</ttcode>" (se si vuole indicare esplicitamente un trattino occorre specificarlo come ultimo carattere, ad esempio "<ttcode>[0-9-]</ttcode>") ed anche le classi di caratteri predefinite come "<ttcode><nowiki>[:alpha:]</nowiki></ttcode>" o <ttcode><nowiki>[:digit:]</nowiki></ttcode> che si ritrovano anche nelle [[Espressione regolare|espressioni regolari]]. Ad esempio "<ttcode><nowiki>[[:alpha:]123]</nowiki></ttcode>" trova corrispondenza in "<ttcode>a</ttcode>", "<ttcode>b</ttcode>", "<ttcode>1</ttcode>", "<ttcode>Z</ttcode>".
|-
| '''<ttcode>[!''caratteri'']</ttcode>''' (o anche '''<ttcode>[^''caratteri'']</ttcode>''')
| Rappresenta un singolo carattere che non è tra i ''caratteri'' specificati. Ad esempio "<ttcode>ab[!ef]</ttcode>" trova corrispondenza in tutte le stringhe di tre caratteri eccetto "<ttcode>abe</ttcode>" e "<ttcode>abf</ttcode>". Anche in questo caso è possibile specificare intervalli e classi di caratteri.
 
Volendo specificare anche una parentesi quadra chiusa, occorre specificarla come primo carattere di seguito al punto esclamativo, ad esempio con "<ttcode>[!]xyzx|-yz]</ttcode>".
 
La variante con accento circonflesso "<ttcode>^</ttcode>" è generalmente disponibile per analogia con le espressioni regolari, sebbene lo standard [[POSIX]] specifichi che il comportamento in tale caso è indefinito.
|-
| '''<ttcode>{''caratteri''}</ttcode>'''
| Rappresenta più espansioni di caratteri separati da una virgola.
Ad esempio "{a,b?,c,ciao}" trova corrispondenza in "a","b" più un qualsiasi carattere (es. "ba","b1","bp"),"c" e la parola "ciao".
|}
 
Per far in modo che un metacarattere sia interpretato in maniera letterale occorre precederlofarlo conprecedere da una [[BackslashBarra rovesciata|barra inversa]] "<ttcode>\</ttcode>", ad esempio "<ttcode>ab\[cde</ttcode>".
 
==Voci correlate==
Riga 41:
 
== Collegamenti esterni ==
* {{FOLDOC|glob|glob}}
* {{cita web
|url=httphttps://www.opengroup.org/onlinepubs/000095399/utilities/xcu_chap02.html#tag_02_13
|titolo=2.13 Pattern Matching Notation
|accesso=19-05-2008
Riga 58 ⟶ 59:
{{Portale|Informatica}}
[[Categoria:Unix]]
 
[[en:Glob (programming)]]
[[pt:Glob (programação)]]