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 („|“).