.. _notmuch-sexp-query(7): ==================== notmuch-sexp-queries ==================== SYNOPSIS ======== **notmuch** **search** ``--query=sexp`` '(and (to santa) (date december))' DESCRIPTION =========== S-EXPRESSIONS ------------- An *s-expression* is either an atom, or list of whitespace delimited s-expressions inside parentheses. Atoms are either *basic value* A basic value is an unquoted string containing no whitespace, double quotes, or parentheses. *quoted string* Double quotes (") delimit strings possibly containing whitespace or parentheses. These can contain double quote characters by escaping with backslash. E.g. ``"this is a quote \""``. S-EXPRESSION QUERIES -------------------- An s-expression query is either an atom, the empty list, or a *compound query* consisting of a prefix atom (first element) defining a *field*, *logical operation*, or *modifier*, and 0 or more subqueries. ``*`` ``()`` The empty list matches all messages *term* Match all messages containing *term*, possibly after stemming or phase splitting. For discussion of stemming in notmuch see :any:`notmuch-search-terms(7)`. Stemming only applies to unquoted terms (basic values) in s-expression queries. ``(`` *field* |q1| |q2| ... |qn| ``)`` Restrict the queries |q1| to |qn| to *field*, and combine with *and* (for most fields) or *or*. See :any:`fields` for more information. ``(`` *operator* |q1| |q2| ... |qn| ``)`` Combine queries |q1| to |qn|. Currently supported operators are ``and``, ``or``, and ``not``. ``(not`` |q1| ... |qn| ``)`` is equivalent to ``(and (not`` |q1| ``) ... (not`` |qn| ``))``. ``(`` *modifier* |q1| |q2| ... |qn| ``)`` Combine queries |q1| to |qn|, and reinterpret the result (e.g. as a regular expression). See :any:`modifiers` for more information. .. _fields: FIELDS `````` .. _modifiers: MODIFIERS ````````` EXAMPLES ======== ``Wizard`` Match all messages containing the word "wizard", ignoring case. ``added`` Match all messages containing "added", but also those containing "add", "additional", "Additional", "adds", etc... via stemming. ``(and Bob Marley)`` Match messages containing words "Bob" and "Marley", or their stems The words need not be adjacent. ``(not Bob Marley)`` Match messages containing neither "Bob" nor "Marley", nor their stems, .. |q1| replace:: :math:`q_1` .. |q2| replace:: :math:`q_2` .. |qn| replace:: :math:`q_n`