NOT COMPLETE YET.
This package implement POSIX Regular Expressions in Common-Lisp.
This is interesting because it's available on any Common-Lisp platform
while external C regexp libraries or internals are available or not,
and not always implement these same syntax or semantic.
Posix Regexp implemented in Common-Lisp.
See specifications at:
http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap09.html
This is a strict implementation that will work both in clisp
(Common-Lisp) and emacs (with cl and pjb-cl Common-Lisp extensions).
This implementation is entirely in lisp, contrarily to what regexp
packages are available under clisp or emacs. Thus it has the advantage
of portability and availability (you don't have to compile or link
a lisp system written in some barbarous language, and you get the same
regexp features in all programs including this module).
License:
AGPL3
Copyright Pascal J. Bourguignon 2002 - 2012
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program 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 Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program.
If not, see <http://www.gnu.org/licenses/>
|
match |
structure |
This structure stores a (start,end) couple specifying the range matched by a group (or the whole regexp).
|
(match regexp string &optional start end) |
function |
Common-Lisp: This function returns as first value a match structure
containing the indices of the start and end of the first match for the
regular expression REGEXP in STRING, or nil if there is no match.
If START is non-nil, the search starts at that index in STRING.
If END is non-nil, only (subseq STRING START END) is considered.
The next values are match structures for every '(...)' construct in REGEXP,
in the order that the open parentheses appear in REGEXP.
start: the first character of STRING to be considered (defaults to 0)
end: the after last character of STRING to be considered
(defaults to (length string)).
RETURN: index of start of first match for REGEXP in STRING, nor nil.
MATCH-END
MATCH-START
|
(match-string string match) |
function |
Extracts the substring of STRING corresponding to a given pair of start and end indices. The result is shared with STRING. If you want a freshly consed string, use copy-string or (coerce (match-string ...) 'simple-string).
RE-NSUB
|
(regcomp pattern &key extended ignore-case nosub newline) |
function |
RETURN: A regex-t representing the compiled regular expression PATTERN. RAISE: An ERROR condition, in case of syntax error.
|
regex-t |
structure |
NSUB: Number of parenthesized subexpressions.
|
(regexec regex string &key nmatch bol eol) |
function |
RETURN: match ;
(or (not match) (null nmatch) (zerop nmatch) (re-nosub regex)) ==> nil
(eq t nmatch) ==> A vector of regmatch-t with (1+ (re-nsub regex))
items
(numberp nmatch) ==> A vector of regmatch-t with nmatch items.
WARNING: Entry #0 of the result vector is always the start and end of the
whole expression. To get the start and end of the last subexpression
you need to pass :nmatch (1+ (re-nsub regex)) [or T].
REGEXP-QUOTE
|
regmatch-t |
structure |
SO: Byte offset from start of string to start of substring.
EO: Byte offset from start of string of the first character
after the end of substring.
|
regoff-t |
type |
The type regoff_t shall be defined as a signed integer type that can hold the largest value that can be stored in either a type off_t or type ssize_t.
RM-EO
RM-SO
|
size-t |
type |
Used for sizes of objects.