#### 6.2.2 Regsexp Procedures

The regular s-expression implementation has two parts, like many other regular-expression implementations: a compiler that translates the pattern into an efficient form, and one or more procedures that use that pattern to match or search inputs.

procedure: compile-regsexp regsexp ¶

  Compiles regsexp by translating it into a procedure that implements the specified matcher.

The match and search procedures each return a list when they are successful, and `#f` when they fail. The returned list is of the form `(s e register …)`, where s is the index at which the match starts, e is the index at which the match ends, and each register is a pair `(key . contents)` where key is the register’s name and contents is the contents of that register as a string.

In order to get reliable results, the string arguments to these procedures must be in Unicode Normalization Form C. The string implementation keeps most strings in this form by default; in other cases the caller must convert the string using `string->nfc`.

procedure: regsexp-match-string crse string [start [end]] ¶

  The crse argument must be a value returned by `compile-regsexp`.

  Matches string against crse and returns the result.

procedure: regsexp-search-string-forward crse string [start [end]] ¶

  The crse argument must be a value returned by `compile-regsexp`.

  Searches string from left to right for a match against crse and returns the result.