PostgreSQL Source Code
git master
|
Go to the source code of this file.
Data Structures | |
struct | pg_regex_t |
struct | pg_regmatch_t |
struct | rm_detail_t |
Macros | |
#define | _PG_REGEX_H_ /* never again */ |
#define | REG_UBACKREF 000001 /* has back-reference (\n) */ |
#define | REG_ULOOKAROUND 000002 /* has lookahead/lookbehind constraint */ |
#define | REG_UBOUNDS 000004 /* has bounded quantifier ({m,n}) */ |
#define | REG_UBRACES 000010 /* has { that doesn't begin a quantifier */ |
#define | REG_UBSALNUM 000020 /* has backslash-alphanumeric in non-ARE */ |
#define | REG_UPBOTCH |
#define | REG_UBBS 000100 /* has backslash within bracket expr */ |
#define | REG_UNONPOSIX 000200 /* has any construct that extends POSIX */ |
#define | REG_UUNSPEC |
#define | REG_UUNPORT 001000 /* has numeric character code dependency */ |
#define | REG_ULOCALE 002000 /* has locale dependency */ |
#define | REG_UEMPTYMATCH 004000 /* can match a zero-length string */ |
#define | REG_UIMPOSSIBLE 010000 /* provably cannot match anything */ |
#define | REG_USHORTEST 020000 /* has non-greedy quantifier */ |
#define | REG_BASIC 000000 /* BREs (convenience) */ |
#define | REG_EXTENDED 000001 /* EREs */ |
#define | REG_ADVF 000002 /* advanced features in EREs */ |
#define | REG_ADVANCED 000003 /* AREs (which are also EREs) */ |
#define | REG_QUOTE 000004 /* no special characters, none */ |
#define | REG_NOSPEC REG_QUOTE /* historical synonym */ |
#define | REG_ICASE 000010 /* ignore case */ |
#define | REG_NOSUB 000020 /* caller doesn't need subexpr match data */ |
#define | REG_EXPANDED 000040 /* expanded format, white space & comments */ |
#define | REG_NLSTOP 000100 /* \n doesn't match . or [^ ] */ |
#define | REG_NLANCH 000200 /* ^ matches after \n, $ before */ |
#define | REG_NEWLINE 000300 /* newlines are line terminators */ |
#define | REG_PEND 000400 /* ugh -- backward-compatibility hack */ |
#define | REG_EXPECT 001000 /* report details on partial/limited matches */ |
#define | REG_BOSONLY 002000 /* temporary kludge for BOS-only matches */ |
#define | REG_DUMP 004000 /* none of your business :-) */ |
#define | REG_FAKE 010000 /* none of your business :-) */ |
#define | REG_PROGRESS 020000 /* none of your business :-) */ |
#define | REG_NOTBOL 0001 /* BOS is not BOL */ |
#define | REG_NOTEOL 0002 /* EOS is not EOL */ |
#define | REG_STARTEND 0004 /* backward compatibility kludge */ |
#define | REG_FTRACE 0010 /* none of your business */ |
#define | REG_MTRACE 0020 /* none of your business */ |
#define | REG_SMALL 0040 /* none of your business */ |
#define | REG_OKAY 0 /* no errors detected */ |
#define | REG_NOMATCH 1 /* failed to match */ |
#define | REG_BADPAT 2 /* invalid regexp */ |
#define | REG_ECOLLATE 3 /* invalid collating element */ |
#define | REG_ECTYPE 4 /* invalid character class */ |
#define | REG_EESCAPE 5 /* invalid escape \ sequence */ |
#define | REG_ESUBREG 6 /* invalid backreference number */ |
#define | REG_EBRACK 7 /* brackets [] not balanced */ |
#define | REG_EPAREN 8 /* parentheses () not balanced */ |
#define | REG_EBRACE 9 /* braces {} not balanced */ |
#define | REG_BADBR 10 /* invalid repetition count(s) */ |
#define | REG_ERANGE 11 /* invalid character range */ |
#define | REG_ESPACE 12 /* out of memory */ |
#define | REG_BADRPT 13 /* quantifier operand invalid */ |
#define | REG_ASSERT 15 /* "can't happen" -- you found a bug */ |
#define | REG_INVARG 16 /* invalid argument to regex function */ |
#define | REG_MIXED 17 /* character widths of regex and string differ */ |
#define | REG_BADOPT 18 /* invalid embedded option */ |
#define | REG_ETOOBIG 19 /* regular expression is too complex */ |
#define | REG_ECOLORS 20 /* too many colors */ |
#define | REG_ATOI 101 /* convert error-code name to number */ |
#define | REG_ITOA 102 /* convert error-code number to name */ |
#define | REG_PREFIX (-1) /* identified a common prefix */ |
#define | REG_EXACT (-2) /* identified an exact match */ |
#define | regoff_t pg_regoff_t |
#define | regex_t pg_regex_t |
#define | regmatch_t pg_regmatch_t |
Typedefs | |
typedef long | pg_regoff_t |
Functions | |
int | pg_regcomp (regex_t *re, const pg_wchar *string, size_t len, int flags, Oid collation) |
int | pg_regexec (regex_t *re, const pg_wchar *string, size_t len, size_t search_start, rm_detail_t *details, size_t nmatch, regmatch_t pmatch[], int flags) |
int | pg_regprefix (regex_t *re, pg_wchar **string, size_t *slength) |
void | pg_regfree (regex_t *re) |
size_t | pg_regerror (int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size) |
regex_t * | RE_compile_and_cache (text *text_re, int cflags, Oid collation) |
bool | RE_compile_and_execute (text *text_re, char *dat, int dat_len, int cflags, Oid collation, int nmatch, regmatch_t *pmatch) |
#define REG_ADVANCED 000003 /* AREs (which are also EREs) */ |
#define REG_ASSERT 15 /* "can't happen" -- you found a bug */ |
#define REG_BOSONLY 002000 /* temporary kludge for BOS-only matches */ |
#define REG_ETOOBIG 19 /* regular expression is too complex */ |
#define REG_EXPECT 001000 /* report details on partial/limited matches */ |
#define REG_MIXED 17 /* character widths of regex and string differ */ |
#define REG_NEWLINE 000300 /* newlines are line terminators */ |
#define REG_NLANCH 000200 /* ^ matches after \n, $ before */ |
#define REG_NOSUB 000020 /* caller doesn't need subexpr match data */ |
#define REG_PEND 000400 /* ugh -- backward-compatibility hack */ |
#define REG_STARTEND 0004 /* backward compatibility kludge */ |
#define REG_UBBS 000100 /* has backslash within bracket expr */ |
#define REG_UBOUNDS 000004 /* has bounded quantifier ({m,n}) */ |
#define REG_UBRACES 000010 /* has { that doesn't begin a quantifier */ |
#define REG_UBSALNUM 000020 /* has backslash-alphanumeric in non-ARE */ |
#define REG_UIMPOSSIBLE 010000 /* provably cannot match anything */ |
#define REG_ULOOKAROUND 000002 /* has lookahead/lookbehind constraint */ |
#define REG_UNONPOSIX 000200 /* has any construct that extends POSIX */ |
#define REG_UPBOTCH |
#define REG_USHORTEST 020000 /* has non-greedy quantifier */ |
#define REG_UUNPORT 001000 /* has numeric character code dependency */ |
#define REG_UUNSPEC |
#define regex_t pg_regex_t |
#define regmatch_t pg_regmatch_t |
#define regoff_t pg_regoff_t |
typedef long pg_regoff_t |
Definition at line 370 of file regcomp.c.
References assert, casecmp(), vars::cflags, guts::cflags, cleanst(), vars::cm, guts::cmap, cmp(), CNOERR, COLORLESS, compact(), vars::cv, vars::cv2, debug, DISCARD, dumpnfa(), EOS, vars::err, fflush(), nfa::final, subre::flags, fprintf, freev(), functions, GUTSMAGIC, i, guts::info, nfa::init, initcm(), j, vars::lacons, guts::lacons, subre::latype, LATYPE_IS_AHEAD, len, lexstart(), guts::magic, makesearch(), MALLOC, markst(), newcvec(), newline(), newnfa(), vars::nfa, nfanode(), nfatree(), vars::nlacons, guts::nlacons, vars::nlcolor, NOTE, vars::now, guts::nsub, vars::nsubexp, vars::nsubs, vars::ntree, guts::ntree, numst(), okcolors(), optimize(), parse(), pg_set_regex_collation(), PLAIN, vars::re, REG_ADVANCED, REG_ADVF, REG_DUMP, REG_ESPACE, REG_EXPANDED, REG_EXTENDED, REG_ICASE, REG_INVARG, REG_NEWLINE, REG_NLANCH, REG_NLSTOP, REG_NOSUB, REG_PROGRESS, REG_QUOTE, REG_USHORTEST, REMAGIC, removecaptures(), guts::search, SEE, SHORTER, vars::spaceused, specialcolors(), generate_unaccent_rules::stdout, vars::stop, vars::sub10, subcolor(), vars::subs, vars::tree, guts::tree, vars::treechain, vars::treefree, VS, vars::wordchrs, and ZAPCNFA.
Referenced by NIAddAffix(), RE_compile(), RE_compile_and_cache(), regcomp_auth_token(), and test_re_compile().
size_t pg_regerror | ( | int | errcode, |
const regex_t * | preg, | ||
char * | errbuf, | ||
size_t | errbuf_size | ||
) |
Definition at line 60 of file regerror.c.
References rerr::code, errcode(), rerr::explain, len, rerr::name, REG_ATOI, REG_ITOA, rerrs, sprintf, and unk.
Referenced by check_ident_usermap(), NIAddAffix(), RE_compile(), RE_compile_and_cache(), RE_wchar_execute(), regcomp_auth_token(), regexp_fixed_prefix(), replace_text_regexp(), test_re_compile(), and test_re_execute().
int pg_regexec | ( | regex_t * | re, |
const pg_wchar * | string, | ||
size_t | len, | ||
size_t | search_start, | ||
rm_detail_t * | details, | ||
size_t | nmatch, | ||
regmatch_t | pmatch[], | ||
int | flags | ||
) |
Definition at line 185 of file regexec.c.
References assert, cfind(), guts::cflags, cleanup(), guts::cmap, subre::cnfa, vars::details, vars::eflags, vars::err, fflush(), find(), for(), FREE, freedfa(), vars::g, i, if(), guts::info, vars::ladfas, vars::lblastcp, vars::lblastcss, len, LOCALDFAS, LOCALMAT, MALLOC, guts::nlacons, vars::nmatch, guts::nsub, guts::ntree, pg_set_regex_collation(), vars::pmatch, vars::re, REG_ESPACE, REG_EXPECT, REG_FTRACE, REG_INVARG, REG_MIXED, REG_MTRACE, REG_NOMATCH, REG_NOSUB, REG_OKAY, REG_UBACKREF, REG_UIMPOSSIBLE, regmatch_t, REMAGIC, vars::search_start, vars::start, generate_unaccent_rules::stdout, vars::stop, vars::subdfas, guts::tree, VS, and zapallsubs().
Referenced by CheckAffix(), RE_wchar_execute(), regexec_auth_token(), replace_text_regexp(), and test_re_execute().
void pg_regfree | ( | regex_t * | re | ) |
Definition at line 49 of file regfree.c.
Referenced by free_auth_token(), and test_regex().
Definition at line 46 of file regprefix.c.
References assert, guts::cmap, subre::cnfa, findprefix(), cnfa::flags, FREE, if(), guts::info, MALLOC, MATCHALL, cnfa::nstates, pg_set_regex_collation(), REG_ESPACE, REG_EXACT, REG_INVARG, REG_MIXED, REG_NOMATCH, REG_PREFIX, REG_UIMPOSSIBLE, REMAGIC, and guts::tree.
Referenced by regexp_fixed_prefix().
Definition at line 141 of file regexp.c.
References ALLOCSET_SMALL_SIZES, AllocSetContextCreate, Assert, cached_re_str::cre_collation, cached_re_str::cre_context, cached_re_str::cre_flags, cached_re_str::cre_pat, cached_re_str::cre_pat_len, cached_re_str::cre_re, CurrentMemoryContext, ereport, errcode(), errmsg(), ERROR, i, MAX_CACHED_RES, MemoryContextDelete(), MemoryContextSetIdentifier(), MemoryContextSetParent(), MemoryContextSwitchTo(), num_res, palloc(), pfree(), pg_mb2wchar_with_len(), pg_regcomp(), pg_regerror(), re_array, REG_OKAY, RegexpCacheMemoryContext, TopMemoryContext, unlikely, VARDATA_ANY, and VARSIZE_ANY_EXHDR.
Referenced by RE_compile_and_execute(), regexp_fixed_prefix(), replace_text_regexp(), setup_regexp_matches(), and textregexsubstr().
bool RE_compile_and_execute | ( | text * | text_re, |
char * | dat, | ||
int | dat_len, | ||
int | cflags, | ||
Oid | collation, | ||
int | nmatch, | ||
regmatch_t * | pmatch | ||
) |
Definition at line 358 of file regexp.c.
References RE_compile_and_cache(), RE_execute(), REG_NOSUB, and regex_t.
Referenced by executeLikeRegex(), nameicregexeq(), nameicregexne(), nameregexeq(), nameregexne(), regexp_like(), texticregexeq(), texticregexne(), textregexeq(), and textregexne().