mte/unikernel/duniverse/ocaml-re/lib/glob.mli

96 lines
3.6 KiB
OCaml
Raw Normal View History

2025-11-11 02:07:51 +01:00
(*
RE - A regular expression library
Copyright (C) 2001 Jerome Vouillon
email: Jerome.Vouillon@pps.jussieu.fr
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation, with
linking exception; either version 2.1 of the License, or (at
your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*)
(** Shell-style regular expressions *)
exception Parse_error
(** Implements the semantics of shells patterns. The returned regular
expression is unanchored by default.
Character '*' matches any sequence of characters and character
'?' matches a single character.
A sequence '[...]' matches any one of the enclosed characters.
A sequence '[^...]' or '[!...]' matches any character *but* the enclosed characters.
A backslash escapes the following character. The last character of the string cannot
be a backslash.
[anchored] controls whether the regular expression will only match entire
strings. Defaults to false.
[pathname]: If this flag is set, match a slash in string only with a slash in pattern
and not by an asterisk ('*') or a question mark ('?') metacharacter, nor by a bracket
expression ('[]') containing a slash. Defaults to true.
[match_backslashes]: If this flag is set, a forward slash will also match a
backslash (useful when globbing Windows paths). Note that a backslash in the
pattern will continue to escape the following character. Defaults to
[false].
[period]: If this flag is set, a leading period in string has to be matched exactly by
a period in pattern. A period is considered to be leading if it is the first
character in string, or if both [pathname] is set and the period immediately follows a
slash. Defaults to true.
If [expand_braces] is true, braced sets will expand into multiple globs,
e.g. a\{x,y\}b\{1,2\} matches axb1, axb2, ayb1, ayb2. As specified for bash, brace
expansion is purely textual and can be nested. Defaults to false.
[double_asterisk]: If this flag is set, double asterisks ('**') will match slash
characters, even if [pathname] is set. The [period] flag still applies. Default to
true. *)
val glob
: ?anchored:bool
-> ?pathname:bool
-> ?match_backslashes:bool
-> ?period:bool
-> ?expand_braces:bool
-> ?double_asterisk:bool
-> string
-> Core.t
val glob_result
: ?anchored:bool
-> ?pathname:bool
-> ?match_backslashes:bool
-> ?period:bool
-> ?expand_braces:bool
-> ?double_asterisk:bool
-> string
-> (Core.t, [ `Parse_error ]) result
(** Same, but allows to choose whether dots at the beginning of a
file name need to be explicitly matched (true) or not (false)
@deprecated Use [glob ~period]. *)
val glob' : ?anchored:bool -> bool -> string -> Core.t
(** This version of [glob] also recognizes the pattern \{..,..\}
@deprecated Prefer [glob ~expand_braces:true]. *)
val globx : ?anchored:bool -> string -> Core.t
(** This version of [glob'] also recognizes the pattern \{..,..\}
@deprecated Prefer [glob ~expand_braces:true ~period]. *)
val globx' : ?anchored:bool -> bool -> string -> Core.t