Cercare stringhe

Molti termini di ricerca accettano una stringa come parametro e cercano corrispondenze in uno o più campi di un pacchetto. Le stringhe possono essere inserite con o senza le virgolette doppie («"»), perciò «?name(scorch)» e «?name("scorch")» effettuano la stessa ricerca. Se si inserisce una stringa di ricerca usando le virgolette doppie, si può includere un carattere di virgolette doppie nella stringa di ricerca facendolo immediatamente precedere da una barra inversa («\»): ad esempio, «?description("\"easy\"")» farà corrispondenza con qualsiasi pacchetto la cui descrizione contiene la stringa «"easy"».

Se si inserisce una stringa «nuda», una che non è racchiusa tra virgolette doppie, allora aptitude la considera «terminata» quando incontra la parentesi di chiusura o la virgola prima di un secondo argomento del termine di ricerca. [14]Per rimuovere il significato speciale di questi caratteri, farli immediatamente precedere da una tilde («~»). Per esempio, «?description(etc))» è un errore di sintassi, perché la prima «)» chiude il termine ?description e la seconda «)» non corrisponde a nessuna «(». Al contrario, «?description(etc~))» trova corrispondenza con qualsiasi pacchetto la cui descrizione contenga il testo «etc)». Ulteriori considerazioni si applicano quando si usa la notazione breve per un termine, vedere sezione chiamata «Abbreviazioni per i termini di ricerca» per i dettagli.

La maggior parte delle ricerche di testo (per nomi di pacchetti, descrizioni, ecc.) viene effettuata usando espressioni regolari indifferenti alle maiuscole e minuscole. Un'espressione regolare fa corrispondenza con un campo se una qualsiasi porzione del campo corrisponde all'espressione; per esempio, «ogg[0-9]» fa corrispondenza con «libogg5», «ogg123» e «theoog4u». Alcuni caratteri hanno un significato speciale all'interno delle espressioni regolari [15], perciò se si desidera trovare corrispondenze con essi nelle ricerche, è necessario proteggerli con una barra inversa: per esempio, per cercare «g++», si dovrebbe usare il modello «g\+\+».

I caratteri «!» e «|» hanno un significato speciale all'interno dei modelli di ricerca. Per poter includere questi caratteri in una stringa non racchiusa tra virgolette, si può farli immediatamente precedere da una tilde («~»). Ad esempio, per trovare i pacchetti la cui descrizione contenga «grande» oppure «obliquo», usare il modello «?description(grande~|obliquo)». Tuttavia in questi casi è probabilmente più comodo usare semplicemente una stringa racchiusa tra virgolette: «?description("grande|obliquo")».



[14] aptitude tratta la virgola in modo speciale solamente se c'è un secondo argomento, perciò (ad esempio) «?name(apt,itude)» ricerca la stringa «apt,itude» nel campo Namedei pacchetti.

Benché questo comportamento sia ben definito, può sorprendere; è raccomandato l'uso di stringhe racchiuse tra virgolette per qualsiasi modello che contenga caratteri che potrebbero avere un significato speciale.

[15] I caratteri con un significato speciale includono: «+», «-», «.», «(», «)», «|», «[», «]», «^», «$» e «?». Notare che alcuni di questi sono anche metacaratteri per aptitude, perciò se si desidera (ad esempio) digitare una «|» in modo letterale, questa deve essere protetta due volte: «?description(\~|)» trova corrispondenza con i pacchetti la cui descrizione contiene un carattere di barra verticale («|»).