lStrWildCmpEx() new flags

ot4xb version introducing the new function lStrWildCmpEx() that is an extension of the existing lStrWildCmp()

As the lStrWildCmp() old function the new lStrWildCmpEx() function compare an input string with a template string that can contain wildcards * and ? like the directory wildcards.

The previous function was only supporting the flag 1 or .T. meaning case insensitive compare

lStrWildCmpEx() with the flag 0x200 support C++ 14 stdlib regular expressions ( faster  than the ot4xb rgx class or functions based on the VB Script reg exp)

Another new feature is that we can provide also an array of wildcard strings instead of a single wildcard string


lStrWildCmpEx( cWild|aWild , cStr,[nFlags],[regex_flags],[regex_match_flags]) -> lMatch

Can be a combination of zero or more of the following flags
 0x0001 = case insensitive
 0x0002 = return found index ( first or last if flags & 4 )
 0x0004 = stop at last ocurrence
 0x0008 = add * at the begining and end of the wildcard emulating the $ operator (
 0x0010 = compare left trimmed string if not using regexp
 0x0020 = compare right trimmed string if not using regexp
 0x0040 = allow ^ at the begining as negation (
 0x0200 = ot4xb_regex_match
 0x8000 = ( only arrays without regexp) (
                 if ~ ( char 126) at the begining the expression MUST NOT exist
                 if ` ( char 96) at the begining the expression MUST exist
0x0100 = use template characters ( alphanumeric(A) ,numbers (9)  and symbols )

Only with nFlags & 0x200
ECMAScript = 0x01   ( DEFAULT )
basic = 0x02
extended = 0x04
awk = 0x08
grep = 0x10
egrep = 0x20
_Gmask = 0x3F
icase = 0x0100
nosubs = 0x0200
optimize = 0x0400
collate = 0x0800

Only with nFlags & 0x200
match_default = 0x0000,
match_not_bol = 0x0001,
match_not_eol = 0x0002,
match_not_bow = 0x0004,
match_not_eow = 0x0008,
match_any = 0x0010,
match_not_null = 0x0020,
match_continuous = 0x0040,
match_prev_avail = 0x0100,
format_default = 0x0000,
format_sed = 0x0400,
format_no_copy = 0x0800,
format_first_only = 0x1000

1 comment:

  1. New Flags introduced on v
    0x10 = compare left trimmed string if not using regexp
    0x20 = compare right trimmed string if not using regexp