Match syntax (tags/properties)
Used by the agenda (m, M, custom commands), sparse trees and clocktables. The syntax is Emacs's `org-make-tags-matcher':
+work-boss hasworkand notbosswork:boss both tags (:and&are synonyms of+) work|home either tag {^proj} a tag matching a regexp LEVEL>1 property comparison: = == <> != /= < <= > >= PRIORITY="A" string comparison; a missing property is "" Effort<2 numbers compare like `string-to-number': "1:30" is 1, a missing property is 0 Effort<*2 starred operators (<* <=* =* >=* >* <>* !=* /=*) only match entries that have the property CATEGORY={^work} regexp match on a property (<>, != and /= negate) SCHEDULED<="<+2d>" date comparison: "<now>", "<today>", "<tomorrow>", "<+2d>", "<-1w>", "<+1m>", "<2026-01-01>" +proj/NEXT|TODO TODO keyword part after/+proj/! only entries that aren't done /-DONE exclude a keyword work/{^W} a regexp in the TODO part
Regexps in {...}' are written in Emacs syntax (\(...\)', \|', +', ?', \{m,n\}', [[:alpha:]]', \<', `\s-', ...), translated to Vim regexps, and ignore case, like Emacs. Text that does not start a new term ends the match, as in Emacs: "work -boss" is the same as "work" (write "work-boss").