Node:Match Structures,
Next:Backslash Escapes,
Previous:Regexp Functions,
Up:Regular Expressions
21.5.2 Match Structures
A match structure is the object returned by string-match
and
regexp-exec
. It describes which portion of a string, if any,
matched the given regular expression. Match structures include: a
reference to the string that was checked for matches; the starting and
ending positions of the regexp match; and, if the regexp included any
parenthesized subexpressions, the starting and ending positions of each
submatch.
In each of the regexp match functions described below, the match
argument must be a match structure returned by a previous call to
string-match
or regexp-exec
. Most of these functions
return some information about the original target string that was
matched against a regular expression; we will call that string
target for easy reference.
regexp-match? obj
|
Scheme Procedure |
Return #t if obj is a match structure returned by a
previous call to regexp-exec , or #f otherwise.
|
match:substring match [n]
|
Scheme Procedure |
Return the portion of target matched by subexpression number
n. Submatch 0 (the default) represents the entire regexp match.
If the regular expression as a whole matched, but the subexpression
number n did not match, return #f .
|
(define s (string-match "[0-9][0-9][0-9][0-9]" "blah2002foo"))
(match:substring s)
=> "2002"
;; match starting at offset 6 in the string
(match:substring
(string-match "[0-9][0-9][0-9][0-9]" "blah987654" 6))
=> "7654"
match:start match [n]
|
Scheme Procedure |
Return the starting position of submatch number n.
|
In the following example, the result is 4, since the match starts at
character index 4:
(define s (string-match "[0-9][0-9][0-9][0-9]" "blah2002foo"))
(match:start s)
=> 4
match:end match [n]
|
Scheme Procedure |
Return the ending position of submatch number n.
|
In the following example, the result is 8, since the match runs between
characters 4 and 8 (i.e. the "2002").
(define s (string-match "[0-9][0-9][0-9][0-9]" "blah2002foo"))
(match:end s)
=> 8
match:prefix match
|
Scheme Procedure |
Return the unmatched portion of target preceding the regexp match.
(define s (string-match "[0-9][0-9][0-9][0-9]" "blah2002foo"))
(match:prefix s)
=> "blah"
|
match:suffix match
|
Scheme Procedure |
Return the unmatched portion of target following the regexp match.
|
(define s (string-match "[0-9][0-9][0-9][0-9]" "blah2002foo"))
(match:suffix s)
=> "foo"
match:count match
|
Scheme Procedure |
Return the number of parenthesized subexpressions from match.
Note that the entire regular expression match itself counts as a
subexpression, and failed submatches are included in the count.
|
match:string match
|
Scheme Procedure |
Return the original target string.
|
(define s (string-match "[0-9][0-9][0-9][0-9]" "blah2002foo"))
(match:string s)
=> "blah2002foo"