struct mg_match_element;
struct mg_match_context;
mg_match( pat, str, mcx );
mg_match()
Parameter | Type | Description |
---|---|---|
pat |
const char * |
A pattern string to search for. |
str |
const char * |
The pattern will be searched in this string. |
mcx |
struct mg_match_context * |
Pointer to a "match context" structure. Optional: can be NULL. |
struct mg_match_context
Field | Type | Description |
---|---|---|
case_sensitive |
int |
Input: 1 for case sensitive or for 0 insensitive match. |
num_matches |
size_t |
Output: Number of wildcard matches found in str . |
match |
struct mg_match_element[] |
Output: This array is filled with matches. |
In case mcx
is not provided to mg_match()
(a NULL pointer is provided), case insensitive pattern matching will be performed. The wildcard matches will not be stored.
The size of the match
array is defined by the compile time constant MG_MATCH_CONTEXT_MAX_MATCHES
.
struct mg_match_element
Field | Type | Description |
---|---|---|
str |
const char * |
Pointer to the begin of a wildcard match in str . |
len |
size_t |
Length of the wildcard match. |
Type | Description |
---|---|
ptrdiff_t |
Number of characters matched, counting from the beginning or str . If the pattern does not match -1 is returned. Note that 0 may be a valid match for some patterns. |
Pattern matching function. Try to find characters matching pattern pat
in string str
.
A definition of valid pattern can be found in the User Manual.
E.g.:
mg_match("**.cgi$", "anywhere/anyname.cgi", NULL)
will return 20 (strlen(str)
).
mg_match("**.cgi$", "anywhere/anyname.cgi", &mcx)
will return 20 (strlen(str)
).
Furthermore will set mcx.match[0].str
to point to the first match "anywhere/anyname" (that is str+0
)
and mcx.match[0].len
to 16 (strlen("anywhere/anyname")
), but it will not terminate the string.
The value of mcx.num_matches
is 1, since the only wildcard pattern **
matches everything.
mg_match("a?*/?*g", "ABC/DEFG", &mcx)
with mcx.case_sensitive = 0
will return 8 (strlen(str)
).
The value of mcx.num_matches
is 2, one for each ?*
wildcard.
The first match mcx.match[0].str
will point to "BC" (str+1
) and mcx.match[0].len == 2
.
The second match mcx.match[1].str
will point to "DEF" (str+4
) and mcx.match[1].len == 3
.
Note: This is an experimental interface. Structure definitions may change in future versions.