Searching for strings

Many search terms take a string as a parameter and match it against one or more fields of a package. Strings can be entered either with or without double quotes (« " »), so « ?name(scorch) » and « ?name("scorch") » will perform the same search. If you enter a search string using double quotes, you can include a literal double-quote in the search string by placing a backslash (« \ ») immediately before it: for instance, « ?description("\"easy\"") » will match any package whose description contains the string « "easy" ».

If you enter a « bare » string, one not surrounded by double quotes, then aptitude will consider the string to have « ended » when it encounters the closing parenthesis or the comma before a second argument to the search term. [14] To remove the special meaning of these characters, place a tilde (« ~ ») directly before them. For instance, « ?description(etc)) » is a syntax error, because the first « ) » ends the ?description term, and the second « ) » does not correspond to any « ( ». In contrast, « ?description(etc~)) » matches any package whose description contains the text « etc) ». There are additional considerations if you are using the shorthand notation for a term; see la section intitulée « Shorthand for search terms » for details.

Most textual searches (for package names, descriptions, etc) are performed using case-insensitive regular expressions. A regular expression will match against a field if any portion of the field matches the expression; for instance, « ogg[0-9] » will match « libogg5 », « ogg123 », and « theogg4u ». Some characters have a special meaning within regular expressions [15] , so if you want to match them in searches you need to backslash-escape them: for instance, to find « g++ », you should use the pattern « g\+\+ ».

The characters « ! » and « | » have special meanings within search patterns. In order to include these characters in an unquoted string, you can place a tilde (« ~ ») directly before them. For instance, to match packages whose description contains either « grand » or « oblique », use the pattern « ?description(grand~|oblique) ». However, you will probably find it more convenient to simply use a quoted string in these cases: « ?description("grand|oblique") ».



[14] aptitude will only treat the comma as special if there is a second argument, so (for instance) « ?name(apt,itude) » searches for the string « apt,itude » in the Name field of packages.

While this behavior is well-defined, it may be surprising; I recommend using quoted strings for any pattern that contains characters that could have a special meaning.

[15] Characters with a special meaning include: « + », « - », « . », « ( », « ) », « | », « [ », « ] », « ^ », « $ », and « ? ». Note that some of these are also aptitude metacharacters, so if you want to type (for instance) a literal « | », it must be double-escaped: « ?description(\~|) » will match packages whose description contains a vertical bar character (« | »).