Glob-style pattern matching — matches strings against patterns containing '*' (wildcard) and '?' (joker).
glib.lib
#include <glib.h>
GPatternSpec;
GPatternSpec* g_pattern_spec_new (const gchar *pattern);
void g_pattern_spec_free (GPatternSpec *pspec);
gboolean g_pattern_spec_equal (GPatternSpec *pspec1, GPatternSpec *pspec2);
gboolean g_pattern_match (GPatternSpec *pspec, guint string_length, const gchar *string, const gchar *string_reversed);
gboolean g_pattern_match_string (GPatternSpec *pspec, const gchar *string);
gboolean g_pattern_match_simple (const gchar *pattern, const gchar *string);
The g_pattern_match* functions match a string
against a pattern containing '*' and '?' wildcards with similar semantics as the
standard glob()
function: '*' matches an arbitrary, possibly empty, string, '?' matches an
arbitrary character.
Note that in contrast to glob(), the '/' character
can be matched by the wildcards, there
are no '[...]' character ranges and '*' and '?' can
not
be escaped to include them literally in a pattern.
When multiple strings must be matched against the same pattern, it is better to
compile the pattern to a GPatternSpec using g_pattern_spec_new() and use g_pattern_match_string() instead of g_pattern_match_simple(). This avoids the overhead
of repeated pattern compilation.
typedef struct _GPatternSpec GPatternSpec;
A GPatternSpec is the 'compiled' form of a pattern. This structure is opaque and its fields cannot be accessed directly.
GPatternSpec* g_pattern_spec_new (const gchar *pattern);
Compiles a pattern to a GPatternSpec.
pattern : |
a zero-terminated UTF-8 encoded string. |
| Returns : | a newly-allocated GPatternSpec. |
void g_pattern_spec_free (GPatternSpec *pspec);
Frees the memory allocated for the GPatternSpec.
pspec : |
a GPatternSpec. |
gboolean g_pattern_spec_equal (GPatternSpec *pspec1, GPatternSpec *pspec2);
Compares two compiled pattern specs and returns whether they will match the same set of strings.
pspec1 : |
a GPatternSpec. |
pspec2 : |
another GPatternSpec. |
| Returns : | Whether the compiled patterns are equal. |
gboolean g_pattern_match (GPatternSpec *pspec, guint string_length, const gchar *string, const gchar *string_reversed);
Matches a string against a compiled pattern. Passing the correct length of the
string given is mandatory. The reversed string can be omitted by passing
NULL, this is more efficient if the reversed version of the string to be
matched is not at hand, as g_pattern_match() will only construct it if the
compiled pattern requires reverse matches.
Note that, if the user code will (possibly) match a string against a multitude
of patterns containing wildcards, chances are high that some patterns will
require a reversed string. In this case, it's more efficient to provide the
reversed string to avoid multiple constructions thereof in the various calls to
g_pattern_match().
Note also that the reverse of a UTF-8 encoded string can in general not be obtained by g_strreverse(). This works only if the string
doesn't contain any multibyte characters. Glib offers the
g_utf_strreverse()
function to reverse UTF-8 encoded strings.
pspec : |
a GPatternSpec. |
string_length : |
the length of string.
|
string : |
the UTF-8 encoded string to match. |
string_reversed : |
the reverse of string
or
NULL.
|
| Returns : |
TRUE if string
matches pspec.
|
gboolean g_pattern_match_string (GPatternSpec *pspec, const gchar *string);
Matches a string against a compiled pattern. If the string is to be matched
against more than one pattern, consider using
g_pattern_match() instead while supplying the
reversed string.
pspec : |
a GPatternSpec. |
string : |
the UTF-8 encoded string to match. |
| Returns : |
TRUE if string
matches pspec.
|
Matches a string against a pattern given as a
string. If this function is to be called in a loop, it's more efficient to
compile the pattern once with g_pattern_spec_new() and call g_pattern_match_string()
repetitively.
|
© 2005-2007 Nokia |