A globber is a boolean combination of basic expressions indented to work on pathnames. Known operators are or
, and
and not
, which may also be written |
, &
and ~
. There are also constants true
and false
(or 1
and 0
). Expression can be grouped using parentheses.
true
matches anything,false
matches nothing,basic or
basic matches strings matching either one of the basic expressions,basic and
basic matches strings matching both basic expressions,not
basic matches string that don't match the basic expression,basic matches strings that match the basic expression.A basic expression can be a constant string enclosed in double quotes, in which double quotes must be preceded by backslashes, or a glob pattern enclosed between a <
and a >
,
"
string "
matches the literal string string ,<
glob >
matches the glob pattern glob .A glob pattern is an anchored regular expression in a shell-like syntax. Most characters stand for themselves. Character ranges are given in usual shell syntax between brackets. The star *
stands for any sequence of characters. The joker '?' stands for exactly one, unspecified character. Alternation is achieved using braces {
.
glob1 glob2 matches strings who have a prefix matching glob1 and the corresponding suffix matching glob2 .a
matches the string consisting of the single letter a
.{
glob1 ,glob2 }
matches strings matching glob1 or glob2 .?
matches any one-letter string, excluding the slash.*
matches all strings not containing a slash, including the empty one.**/
matches the empty string, or any string ending with a slash./**
matches any string starting with a slash, or the empty string./**/
matches any string starting and ending with a slash.[
c1 -c2 c3 -c4 ...]
matches characters in the range c1 to c2 inclusive, or in the range c3 to c4 inclusive. For instance [a-fA-F0-9]
matches hexadecimal digits. To match the dash, put it at the end.type fast_pattern
The type representing fast patterns. Do not attempt to compare them, as they get on-the-fly optimizations.
val fast_pattern_of_pattern : Ast.pattern -> fast_pattern
type globber
= fast_pattern Ast.atom Formula.t
The type representing globbers. Do not attempt to compare them, as they get on-the-fly optimizations.
val parse : ?dir:string -> string -> globber
parse ~dir pattern
will parse the globber pattern pattern
, optionally prefixing its patterns with dir
.
exception
Parse_error of string
A descriptive exception raised when an invalid glob pattern description is given.
val eval : globber -> string -> bool
eval g u
returns true
if and only if the string u
matches the given glob expression. Avoid re-parsing the same pattern, since the automaton implementing the pattern is optimized on the fly. The first few evaluations are done using a time-inefficient but memory-efficient algorithm. It then compiles the pattern into an efficient but more memory-hungry data structure.