
This library provides facilities for matching strings and terms against patterns. Some prolog flags are available to control its behavior.
pred ( =~ "ab*c", B) :- ...
is equivalent to
      pred (X,B) :- match_posix("ab*c",X,R), ... Two additional flags control this matching. The first one is
@tt{format}. @cindex{format} Its values are @tt{shell}, @tt{posix},
@tt{list} and @tt{pred}.  Their effect is as if changing in the
example above the call to @pred{match_posix/3} by a call to,
respectively, @tt{match_shell/2}, @tt{match_posix/3},
@tt{match_struct/3}, and @tt{match_pred/3}.  The default value is
@tt{posix}.  The other prolog flag is @tt{exact}. @cindex{exact}
Its values are @tt{on} and @tt{off}. The @tt{off} value means
replacing in the example @tt{R} with @tt{[]}. If the value is
@tt{on}, then @tt{R} is a variable. The default value is @tt{on}.Usage:match_shell(Exp,IN,Rest)
Matches IN against Exp. Rest is the longest remainder of the string after the match. For example, match_shell("??*","foo.pl",Tail) succeeds, instantiating Tail to "o.pl".
Usage:match_shell(Exp,IN)
Matches completely IN (no tail can remain unmatched) against Exp similarly to match_shell/3.
Usage:match_posix(Exp,IN)
Matches completely IN (no tail can remain unmatched) against Exp similarly to match_posix/3.
Usage:match_posix(Exp,In,Match,Rest)
Usage:match_posix_rest(Exp,IN,Rest)
Matches IN against Exp. Tail is the remainder of the string after the match. For example, match_posix("ab*c","abbbbcdf",Tail) succeeds, instantiating Tail to "df".
Usage:match_posix_matches(Exp,IN,Matches)
Matches completely IN against Exp. Exp can contain anchored expressions of the form \(regexp\). Matches will contain a list of the anchored expression which were matched on success. Note that since POSIX expressions are being read inside a string, backslashes will have to be doubled. For example,
?- match_posix_matches("\(aa|bb\)\(bb|aa\)", "bbaa", M).
M = ["bb","aa"] ? ;
no
?- match_posix_matches("\(aa|bb\)\(bb|aa\)", "aabb", M).
M = ["aa","bb"] ? ;
no
Usage:match_struct(Exp,IN,Rest,Tail)
Matches IN against Exp. Tail is the remainder of the list of atoms IN after the match. For example, match_struct([a,*(b),c],[a,b,b,b,c,d,e],Tail) succeeds, instantiating Tail to [d,e].
Usage:replace_first(IN,Old,New,Resul)
Replace the first occurrence of the Old by New in IN and copy the result in Resul.
Usage:replace_all(IN,Old,New,Resul)
Replace all occurrences of the Old by New in IN and copy the result in Resul.