Available in:
Apps (win)
Apps (char)
Reportwriter
RPC
Standalone PL
X
X
X
X
X
int regexp(option [| flags][,expr1[,expr2]]) int option string expr1 string expr2
regexp_end (option) | returns the ending offset of the match after regexp_exists returns true. Requires the regexp_offsets flag. |
regexp_exist (option) |
executes the cached regular expression tree against expr1 and
returns true if there is a match, otherwise false.
If expr2 is supplied, then the regexp processing uses it as the regular expression instead of the cached one. The cached regular expression is not affected. |
regexp_free (option) | frees the cached regular expresssion. |
regexp_init (option) | initializes and caches the regular expresssion expr1. Any existing regular expression is automatically replaced. |
regexp_start (option) | returns the starting offset of the match after regexp_exists returns true. Requires the regexp_offsets flag. |
regexp_icase (flag) | ignore case when checking for matches. |
regexp_newline (flag) | "match any" in expr1 does not match newline. |
regexp_offsets (flag) | calculate start/end offsets. |
Regexp_start and regexp_end are only valid when regexp_exists is used without the regular expression argument.
#define iters 100000 { int i; char exp[20] = "N*s"; char str[20] = "Niklas Back"; timestamp(); regexp(regexp_init,exp); for (i=iters;i;i--) regexp(regexp_exist,str); printf(regexp(regexp_exist,str) ^^ ", Seconds: " ^^ timestamp()); for (i=iters;i;i--) regexp(regexp_exist,str,exp); printf(regexp(regexp_exist,str,exp) ^^ ", Seconds: " ^^ timestamp()); }The following finds the beginning and ending offsets in a string.
{ char exp[20] = "N.*?s"; char str[20] = "Back, Niklas"; regexp(regexp_init|regexp_offsets,exp); regexp(regexp_exist,str); printf(regexp(regexp_start)); printf(regexp(regexp_end)); }returns
6 12