Pattern

Classe di personaggi

Una classe di caratteri viene utilizzata per rappresentare un insieme di caratteri. Per descrivere una classe di caratteri sono ammesse le seguenti combinazioni:
  • x: (dove x non è uno dei caratteri magici ^$()%.[]*+-?) rappresenta il carattere x stesso.
  • .: (un punto) rappresenta tutti i caratteri.
  • %a: rappresenta tutte le lettere.
  • %c: rappresenta tutti i caratteri di controllo.
  • %d: rappresenta tutte le cifre.
  • %l: rappresenta tutte le lettere minuscole.
  • %p: rappresenta tutti i caratteri di punteggiatura.
  • %s: rappresenta tutti i caratteri di spazio.
  • %u: rappresenta tutte le lettere maiuscole.
  • %w: rappresenta tutti i caratteri alfanumerici.
  • %x: rappresenta tutte le cifre esadecimali.
  • %z: rappresenta il carattere con rappresentazione 0.
  • %x: (dove x è un qualsiasi carattere non alfanumerico) rappresenta il carattere
  • x. Questo è il modo standard per sfuggire ai caratteri magici. Qualsiasi carattere di punteggiatura (anche quelli non magici) può essere preceduto da un "%" quando viene usato per rappresentare se stesso in uno schema.

[set]:rappresenta la classe che è l'unione di tutti i caratteriinset. È possibile specificare un intervallo di caratteri separando i caratteri finali dell'intervallo con un '-'. Tutte le classi '%x descritte sopra possono essere utilizzate anche come componenti di un set. Tutti gli altri personaggi del set rappresentano se stessi. Ad esempio, " [%w_] (o [_%w]) rappresenta tutti i caratteri alfanumerici più il trattino basso, [0-7] rappresentale cifre ottali e " [0-7%l%-] rappresenta le cifre ottali più le lettere minuscole più il carattere "-.

L'interazione tra intervalli e classi non è definita. Pertanto, schemi come " [%a-z] o " [a-% "%] non hanno alcun significato.

[^set]:rappresenta il complemento diset, doveeset èinterpretato come sopra.

Per tutte le classi rappresentate da lettere singole (%a, " %c, ecc.), la lettera maiuscola corrispondente rappresenta il complemento della classe. Ad esempio, " %S rappresenta tutti i caratteri non spaziali.

Le definizioni di lettere, spazi e altri gruppi di caratteri dipendono dal locale corrente. In particolare, la classe " [a-z] può non essere equivalente a " %l.

Articolo del modello

Un elemento del modello può essere:
  • Una classe di caratteri singoli, che corrisponde a qualsiasi carattere singolo della classe.
  • Una classe di caratteri singoli seguita da'*', che corrisponde a 0 o più ripetizioni di caratteri della classe. Questi elementi di ripetizione corrisponderanno sempre alla sequenza più lunga possibile.
  • Una classe di caratteri singoli seguita da'+', che corrisponde a 1 o più ripetizioni di caratteri della classe. Questi elementi di ripetizione corrisponderanno sempre alla sequenza più lunga possibile.
  • Una classe di caratteri singoli seguita da'-', che corrisponde anche a 0 o più ripetizioni di caratteri della classe. A differenza di'*', questi elementi di ripetizione corrispondono sempre alla sequenza più breve possibile.
  • Una classe di un solo carattere seguita da "?", che corrisponde a 0 o 1 occorrenza di un carattere nella classe.
  • %n, per n compreso tra 1 e 9; tale elemento corrisponde a una sottostringa uguale alla n-esima stringa catturata (vedere sotto).
  • %bxy, dove x e y sono due caratteri distinti; tale elemento corrisponde a stringhe che iniziano con x, finiscono con y e in cui x e y sono bilanciati. Ciò significa che, se si legge la stringa da sinistra a destra, contando +1 per una x e -1 per una y, la y finale è la prima y in cui il conteggio arriva a 0. Ad esempio, la voce " %b() corrisponde a espressioni con parentesi bilanciate.

Modello

Un modello è una sequenza di elementi del modello. Un ' '^' all'inizio di un modello fissa la corrispondenza all'inizio della stringa dell'oggetto. Un ' '$' alla fine di un modello fissa la corrispondenza alla fine della stringa dell'oggetto. Nelle altre posizioni, '^' e ''$' non hanno un significato particolare e rappresentano se stessi.

Catture

Un modello può contenere sotto-modelli racchiusi tra parentesi; essi descrivono le catture. Quando una corrispondenza ha successo, le sottostringhe della stringa dell'oggetto catturate dalla corrispondenza vengono memorizzate(catturate) per un uso futuro. Le catture sono numerate in base alla parentesi di sinistra. Ad esempio, nel modello " "(a*(.)%w(%s*))", la parte della stringa che corrisponde a "a*(.)%w(%s*)" viene memorizzata come prima cattura di(e quindi ha il numero 1); il carattere che corrisponde a "." viene catturato con il numero 2, e la parte che corrisponde a "%s*" con il numero 3.

Come caso speciale, la cattura vuota '() cattura la posizione corrente della stringa (un numero). Ad esempio, se si applica lo schema '"()aa()" alla stringa '"flaaap", si otterranno due catture: 3 e 5.

Un modello non può contenere zeri incorporati. Utilizzare invece '%z.