Next: REXP abstraction, Previous: Regular Expressions, Up: Regular Expressions
Procedures that perform regular-expression match and search accept
standardized arguments. Regexp is the regular expression; it is
either a string representation of a regular expression, or a compiled
regular expression object. String is the string being matched
or searched. Procedures that operate on substrings also accept
start and end index arguments with the usual meaning. The
optional argument case-fold? says whether the match/search is
case-sensitive; if case-fold? is #f
, it is
case-sensitive, otherwise it is case-insensitive. The optional
argument syntax-table is a character syntax table that defines
the character syntax, such as which characters are legal word
constituents. This feature is primarily for Edwin, so character
syntax tables will not be documented here. Supplying #f
for
(or omitting) syntax-table will select the default character
syntax, equivalent to Edwin's fundamental
mode.
These procedures match regexp against the respective string or substring, returning
#f
for no match, or a set of match registers (see below) if the match succeeds. Here is an example showing how to extract the matched substring:(let ((r (re-substring-match regexp string start end))) (and r (substring string start (re-match-end-index 0 r))))
Searches string for the leftmost substring matching regexp. Returns a set of match registers (see below) if the search is successful, or
#f
if it is unsuccessful.
re-substring-search-forward
limits its search to the specified substring of string;re-string-search-forward
searches all of string.
Searches string for the rightmost substring matching regexp. Returns a set of match registers (see below) if the search is successful, or
#f
if it is unsuccessful.
re-substring-search-backward
limits its search to the specified substring of string;re-string-search-backward
searches all of string.
When a successful match or search occurs, the above procedures return a
set of match registers. The match registers are a set of index
registers that record indexes into the matched string. Each index
register corresponds to an instance of the regular-expression grouping
operator `\(', and records the start index (inclusive) and end
index (exclusive) of the matched group. These registers are numbered
from 1
to 9
, corresponding left-to-right to the grouping
operators in the expression. Additionally, register 0
corresponds to the entire substring matching the regular expression.
N must be an exact integer between
0
and9
inclusive. Registers must be a match-registers object as returned by one of the regular-expression match or search procedures above.re-match-start-index
returns the start index of the corresponding regular-expression register, andre-match-end-index
returns the corresponding end index.
Registers must be a match-registers object as returned by one of the regular-expression match or search procedures above. String must be the string that was passed as an argument to the procedure that returned registers. N must be an exact integer between
0
and9
inclusive. If the matched regular expression contained m grouping operators, then the value of this procedure is undefined for n strictly greater than m.This procedure extracts the substring corresponding to the match register specified by registers and n. This is equivalent to the following expression:
(substring string (re-match-start-index n registers) (re-match-end-index n registers))
Each alternative must be a string representation of a regular expression. The returned value is a new string representation of a regular expression that consists of the alternatives combined by a grouping operator. For example:
(regexp-group "foo" "bar" "baz") => "\\(foo\\|bar\\|baz\\)"
Regexp-string must be the string representation of a regular expression. Returns a compiled regular expression object of the represented regular expression.
Procedures that apply regular expressions, such as
re-string-search-forward
, are sometimes faster when used with compiled regular expression objects than when used with the string representations of regular expressions, so applications that reuse regular expressions may speed up matching and searching by caching the compiled regular expression objects. However, the regular expression procedures have some internal caches as well, so this is likely to improve performance only for applications that use a large number of different regular expressions before cycling through the same ones again.