Hledání řetězců

Mnoho vyhledávacích termů akceptuje jako parametr řetězec, který pak porovnávají s jedním nebo více poli v hlavičce balíku. Řetězce mohou být zadány jak s, tak bez dvojitých uvozovek ("), takže ?name(scorch) a ?name("scorch") jsou zcela ekvivalentní. Potřebujete-li použít uvozovky uvnitř řetězce obklopeného uvozovkami, můžete těsně před ně umístit zpětné lomítko (\). Například ?description("\"easy\"") se bude shodovat se všemi balíky, které ve svém popisu obsahují řetězec "easy".

Zadáte-li řetězec bez okolních uvozovek, bude aptitude Předpokládat, že tento řetězec končí uzavírací závorkou, případně čárkou, která odděluje další argument termu[11]. Chcete-li odstranit speciální význam těchto znaků, můžete před ně umístit vlnku (~). Například term ?description(etc)) by způsobil syntaktickou chybu, protože první uzavírací závorka ukončí term ?description a druhá závorka již nemá odpovídající párovou závorku. Oproti tomu výraz ?description(etc~)) se shoduje se všemi balíky, které obsahují ve svém popisu text etc). Použití vlnky však přináší další komplikace v případě, že používáte zkrácenou formu termů (viz kapitola „Zkrácená forma vyhledávacích termů“).

Většina textových hledání (v názvech balíků, popisech, atd.) probíhá pomocí regulárních výrazů (velikost písmen se ignoruje). Regulární výraz se shoduje s polem, pokud část pole odpovídá regulárnímu výrazu. Například ogg[0-9] se shoduje s libogg5, ogg123 i theogg4u. Uvnitř regulárních výrazů mají některé znaky speciální význam.[12] To znamená, že pokud chcete tyto znaky vyhledat, musíte před ně psát zpětná lomítka. Například pro nalezení g++ byste měli použít vzor g\+\+.

Pro aptitude mají speciální význam také znaky ! a |. Pokud chcete tyto znaky použít v řetězci neobklopeném uvozovkami, musíte před ně umístit vlnku (~). Například pro vyhledání balíků, jejichž popis obsahuje grand nebo oblique, můžete použít vzor ?description(grand~|oblique). v takovývh případech je však pohodlnější použít řetězec v uvozovkách: ?description("grand|oblique").



[11] aptitude považuje čárku za ukončovač řetězce pouze v případě, dle definice termu můžete zadat další argument. Protože například term ?name akceptuje pouze jeden argument, hledal by vyhledávací vzor ?name(apt,itude) v názvech balíků skutečně řetězec apt,itude.

Přestože je toto chování jasně definované, může občas překvapit. Doporučujeme proto raději používat obklopující uvozovky, obzvláště pokud se v hledaném řetězci vyskytují znaky, které by mohly mít speciální význam.

[12] Řídící znaky regulárních výrazů zahrnují: +, -, ., (, ), |, [, ], ^, $ a ?. Některé z těchto znaků jsou zároveň i řídícími znaky pro aptitude. Chcete-li například napsat literál |, musíte jej uvodit dvakrát: ?description(\~|) se shoduje s balíky, jejich popis obsahuje znak (|).