silc_regex

SYNOPSIS

    SilcBool silc_regex(const char *string, const char *regex,
                        SilcBuffer match, ...);

DESCRIPTION

Matches the `string' to the regular expression `regex'. Returns TRUE if the `string' matches the regular expression or FALSE if it does not match. The silc_errno is also set to SILC_ERR_NOT_FOUND.

The first (whole) match is returned to `match' buffer if it is non-NULL. The variable argument list are buffers where multiple matches are returned in case of group (parenthesized) regular expression. The caller needs to know how many pointers to provide in order to get all matches. If a particular group is optional, a buffer pointer still must be given as argument for it, however, if it did not match the returned buffer length is 0 and data pointer is NULL.

If `match' is non-NULL the variable argument list must be ended with NULL. The data in the `match' and in any other buffer is from `string' and must not be freed by the caller.

EXAMPLE

    // Simple match
    if (!silc_regex("foobar", "foo.", NULL))
      no_match;

    // Get the pointer to the first match
    if (!silc_regex("foobar", ".bar", &match, NULL))
      no_match;

    // Group match
    SilcBufferStruct match, sub1, sub2;

    if (!silc_regex("Hello World", "(H..).(o..)", &match, &sub1, &sub2, NULL))
      no_match;