#include #ifdef __STAND_ALONE #define xp_printf xp_awk_printf extern int xp_awk_printf (const xp_char_t* fmt, ...); #define xp_strcmp xp_awk_strcmp extern int xp_awk_strcmp (const xp_char_t* s1, const xp_char_t* s2); #define xp_strlen xp_awk_strlen extern int xp_awk_strlen (const xp_char_t* s); #endif int xp_main (int argc, const xp_char_t* argv[]) { void* rex; const xp_char_t* ptn; int errnum; //ptn = XP_T("|"); //ptn = XP_T("^he.llo(jo(in|kk)s|com)+h*e{1,40}abc|[^abc][de-f]|^he.llo(jo(in|kk)s|com)+h*e{1,40}abc|[^abc][de-f]"); //ptn = XP_T("^he.llo(jo(in|kk)s|com)+h*e{1,40}abc|[^abc][de-f]"); //ptn = XP_T("^he.llo(jo(in|kk)s|com)|[^x[:space:][:alpha:]j][^abc][de-f]|^he.llo(jo(in|kk)s|com)|[^x[:space:][:alpha:]j][^abc][de-f]"); //ptn = XP_T("^.{0,2}.z[^[:space:]]+(abc|zzz){1,2}khg"); ptn = XP_T(""); rex = xp_awk_buildrex (ptn, xp_strlen(ptn), &errnum); if (rex == XP_NULL) { xp_printf (XP_T("cannot compile pattern\n")); return -1; } xp_printf (XP_T("isemptyrex => %d\n"), xp_awk_isemptyrex (rex)); xp_printf (XP_T("NA: %u\n"), (unsigned int)XP_AWK_REX_NA(rex)); xp_printf (XP_T("LEN: %u\n"), (unsigned int)XP_AWK_REX_LEN(rex)); xp_awk_printrex (rex); { int n; const xp_char_t* match_ptr; xp_size_t match_len; //if (xp_awk_matchrex (rex, XP_T("azhabc"), 6, &match_ptr, &match_len) == 0) n = xp_awk_matchrex (rex, XP_T("azhzzzabckhgi"), 13, &match_ptr, &match_len, &errnum); if (n == 1) { xp_printf (XP_T("match = %s, match length = %u\n"), match_ptr, match_len); } else if (n == 0) { xp_printf (XP_T("go to hell\n")); } else /* if (n == -1) */ { xp_printf (XP_T("ERROR: in match\n")); } } return 0; }