PatternSpec


Object Hierarchy:

GLib.PatternSpec GLib.PatternSpec GLib.PatternSpec

Description:

[ Compact ]
[ CCode ( copy_function = "g_pattern_spec_copy" , free_function = "g_pattern_spec_free" , type_id = "G_TYPE_PATTERN_SPEC" ) ]
public class PatternSpec

A `GPatternSpec` struct is the 'compiled' form of a glob-style pattern.

The [func@GLib.pattern_match_simple] and [method@GLib.PatternSpec.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 [struct@GLib.PatternSpec] using [ ctor@GLib.PatternSpec.new] and use [method@GLib.PatternSpec.match_string] instead of [func@GLib.pattern_match_simple]. This avoids the overhead of repeated pattern compilation.

Example: Match a string against a compiled pattern (full):

public static int main (string[] args) {
PatternSpec spec = new PatternSpec ("dilbert-????/??/??.*");

// Output: ``true``
string str = "dilbert-1999/39/01.png";
bool res = spec.match (str.length, str, str.reverse ());
print ("%s\n", res.to_string ());

// Output: ``true``
str = "dilbert-1999/39/01.jpg";
res = spec.match (str.length, str, null);
print ("%s\n", res.to_string ());

// Output: ``false``
str = "dilbert-1999X/39/01.jpg";
res = spec.match (str.length, str, null);
print ("%s\n", res.to_string ());

return 0;
}

valac --pkg glib-2.0 GLib.PatternSpec.match.vala


Namespace: GLib
Package: glib-2.0

Content:

Static methods:

Creation methods:

Methods: