Glob pattern: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Ianezz (discussione | contributi)
Collegamenti esterni: Aggiunto il template "FOLDOC"
 
(16 versioni intermedie di 12 utenti non mostrate)
Riga 1:
Un '''glob pattern''' è una sintassi attraverso la quale si rappresenta un insieme di [[Stringa (informatica)|stringhe]].
 
È la sintassi tradizionalmente usata nelle [[Shell (informatica)|shell testuali]] dei sistemi [[Unix]] e [[Unix-like]], ma anche [[MS-DOS]] per effettuare l'espansione di nomi di [[file]] e [[directory]], eed essa riprende in piccola parte quella delle [[Espressione regolare|espressioni regolari]].
 
==Sintassi==
In un ''glob pattern'' la maggior parte dei caratteri è vista in modo letterale (ad esempio "<code>a</code>" corrisponde ad "<code>a</code>", "<code>main.c</code>" corrisponde a "<code>main.c</code>"). Fanno eccezione a questa regola i [[Metacarattere|metacaratteri]]:
{| class="wikitable"
! Metacarattere
| '''*'''
! Descrizione
| Rappresenta una sequenza di zero o più caratteri qualsiasi (quindi anche una sequenza vuota). Ad esempio, "abc*" trova corrispondenza in "abcde" ma anche in "abc" stesso.
|-
| '''?<code>*</code>'''
| Rappresenta ununa singolosequenza caratteredi zero o più caratteri qualsiasi, che(quindi peròanche deveuna esseresequenza presentevuota). Ad esempio, "ab?<code>abc*</code>" trova corrispondenza in "abc<code>abcde</code>" e in "ab1", ma nonanche in "ab<code>abc</code>" stesso.
|-
| '''[''caratteri'']<code>?</code>'''
| Rappresenta un singolo carattere qualsiasi, che però deve essere presente. Ad esempio, "<code>ab?</code>" trova corrispondenza in "<code>abc</code>" e in "<code>ab1</code>", ma non in "<code>ab</code>".
|-
| '''<code>[''caratteri'']</code>'''
|
Rappresenta un singolo carattere tra i ''caratteri'' specificati. Ad esempio "<code>a[bB]c</code>" trova corrispondenza in "<code>abc</code>" e "<code>aBc</code>".
 
Volendo specificare anche una parentesi quadra chiusa, occorre specificarla come primo carattere, ad esempio con "<code>[]xyz]</code>".
 
È possibile specificare intervalli di caratteri nella forma "<ttcode>''inizio''-''fine''</ttcode>", (ad esempio "<code>[a-z]</code>" o "<code>[0-9]</code>" (se si vuole indicare esplicitamente un trattino occorre specificarlo come ultimo carattere, ad esempio "<code>[0-9-]</code>") ed anche le classi di caratteri predefinite come "<code><nowiki>[:alpha:]</nowiki></code>" o <code><nowiki>[:digit:]</nowiki></code> che si ritovanoritrovano anche nelle [[Espressione regolare|espressioni regolari]]. Ad esempio "<code><nowiki>[[:alpha:]123]</nowiki></code>" trova corrispondenza in "<code>a</code>", "<code>b</code>", "<code>1</code>", "<code>Z</code>".
|-
| '''<code>[!''caratteri'']</code>''' (o anche '''<code>[^''caratteri'']</code>''')
| Rappresenta un singolo carattere che non è tra i ''caratteri'' specificati. Ad esempio "<code>ab[!ef]</code>" trova corrispondenza in tutte le stringhe di tre caratteri eccetto "<code>abe</code>" e "<code>abf</code>". 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 "<code>[!]xyzx|-yz]</code>".
 
La formavariante 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.
|-
| '''<code>{''caratteri''}</code>'''
| 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 vistointerpretato in maniera letterale occorre precederlofarlo conprecedere da una [[Barra rovesciata|barra inversa]] "<ttcode>\</ttcode>", ad esempio "<code>ab\[cde</code>".
 
==Voci correlate==
Riga 34 ⟶ 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 51 ⟶ 59:
{{Portale|Informatica}}
[[Categoria:Unix]]
 
[[en:Glob (programming)]]