CreateLikeRegexPattern (open)

Create a regular expression pattern to match a LIKE mask

Syntax

LOADLIB "wh::regex.whlib";

STRING FUNCTION CreateLikeRegexPattern(STRING likemask)

Parameters

STRING likemask

The LIKE mask to match

Return value

STRING

The regular expression pattern

Description

This function can be used to create a regular expression to perform a LIKE match. This function allows for "" and "?" to be escaped as "*" and "?", so the literal characters "" and "?" can be matched (which is not possible using LIKE). The resulting pattern can also be used to capture the matched wildcard values.

Examples

STRING string1 := "Is this a test?";
STRING string2 := "Is this a test!";

// Returns TRUE
BOOLEAN like1 := string1 LIKE "Is * a test?";
// Also returns TRUE (The "?" matches a single character)
BOOLEAN like2 := string2 LIKE "Is * a test?";

// Using "\\?" to escape the "?", so we can match the "?" character itself
STRING pattern := CreateLikeRegexPattern("Is * a test\\?");
OBJECT expression := NEW RegEx(pattern);

// Returns TRUE
BOOLEAN test1 := expression->Test(string1);
// Returns FALSE
BOOLEAN test2 := expression->Test(string2);

// exec1 contains two records, the first containing the complete string, the second containing "this" (matched by the "*")
RECORD ARRAY exec1 := expression->Exec(string1);
// exec2 is a default record array, because it doesn't match
RECORD ARRAY exec2 := expression->Exec(string2);