⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 regex.h

📁 gnu tar 源码包。 tar 软件是 Unix 系统下的一个打包软件
💻 H
📖 第 1 页 / 共 2 页
字号:
/* If this bit is set, then ignore case when matching.   If not set, then case is significant.  */#define REG_ICASE (1 << 1)/* If this bit is set, then anchors do not match at newline     characters in the string.   If not set, then anchors do match at newlines.  */#define REG_NEWLINE (1 << 2)/* If this bit is set, then report only success or fail in regexec.   If not set, then returns differ between not matching and errors.  */#define REG_NOSUB (1 << 3)/* POSIX `eflags' bits (i.e., information for regexec).  *//* If this bit is set, then the beginning-of-line operator doesn't match     the beginning of the string (presumably because it's not the     beginning of a line).   If not set, then the beginning-of-line operator does match the     beginning of the string.  */#define REG_NOTBOL 1/* Like REG_NOTBOL, except for the end-of-line.  */#define REG_NOTEOL (1 << 1)/* Use PMATCH[0] to delimit the start and end of the search in the   buffer.  */#define REG_STARTEND (1 << 2)/* If any error codes are removed, changed, or added, update the   `__re_error_msgid' table in regcomp.c.  */typedef enum{  _REG_ENOSYS = -1,	/* This will never happen for this implementation.  */  _REG_NOERROR = 0,	/* Success.  */  _REG_NOMATCH,		/* Didn't find a match (for regexec).  */  /* POSIX regcomp return error codes.  (In the order listed in the     standard.)  */  _REG_BADPAT,		/* Invalid pattern.  */  _REG_ECOLLATE,	/* Invalid collating element.  */  _REG_ECTYPE,		/* Invalid character class name.  */  _REG_EESCAPE,		/* Trailing backslash.  */  _REG_ESUBREG,		/* Invalid back reference.  */  _REG_EBRACK,		/* Unmatched left bracket.  */  _REG_EPAREN,		/* Parenthesis imbalance.  */  _REG_EBRACE,		/* Unmatched \{.  */  _REG_BADBR,		/* Invalid contents of \{\}.  */  _REG_ERANGE,		/* Invalid range end.  */  _REG_ESPACE,		/* Ran out of memory.  */  _REG_BADRPT,		/* No preceding re for repetition op.  */  /* Error codes we've added.  */  _REG_EEND,		/* Premature end.  */  _REG_ESIZE,		/* Compiled pattern bigger than 2^16 bytes.  */  _REG_ERPAREN		/* Unmatched ) or \); not returned from regcomp.  */} reg_errcode_t;#ifdef _XOPEN_SOURCE# define REG_ENOSYS	_REG_ENOSYS#endif#define REG_NOERROR	_REG_NOERROR#define REG_NOMATCH	_REG_NOMATCH#define REG_BADPAT	_REG_BADPAT#define REG_ECOLLATE	_REG_ECOLLATE#define REG_ECTYPE	_REG_ECTYPE#define REG_EESCAPE	_REG_EESCAPE#define REG_ESUBREG	_REG_ESUBREG#define REG_EBRACK	_REG_EBRACK#define REG_EPAREN	_REG_EPAREN#define REG_EBRACE	_REG_EBRACE#define REG_BADBR	_REG_BADBR#define REG_ERANGE	_REG_ERANGE#define REG_ESPACE	_REG_ESPACE#define REG_BADRPT	_REG_BADRPT#define REG_EEND	_REG_EEND#define REG_ESIZE	_REG_ESIZE#define REG_ERPAREN	_REG_ERPAREN/* struct re_pattern_buffer normally uses member names like `buffer'   that POSIX does not allow.  In POSIX mode these members have names   with leading `re_' (e.g., `re_buffer').  */#ifdef __USE_GNU_REGEX# define _REG_RE_NAME(id) id# define _REG_RM_NAME(id) id#else# define _REG_RE_NAME(id) re_##id# define _REG_RM_NAME(id) rm_##id#endif/* The user can specify the type of the re_translate member by   defining the macro RE_TRANSLATE_TYPE, which defaults to unsigned   char *.  This pollutes the POSIX name space, so in POSIX mode just   use unsigned char *.  */#ifdef __USE_GNU_REGEX# ifndef RE_TRANSLATE_TYPE#  define RE_TRANSLATE_TYPE unsigned char *# endif# define REG_TRANSLATE_TYPE RE_TRANSLATE_TYPE#else# define REG_TRANSLATE_TYPE unsigned char *#endif/* This data structure represents a compiled pattern.  Before calling   the pattern compiler, the fields `buffer', `allocated', `fastmap',   `translate', and `no_sub' can be set.  After the pattern has been   compiled, the `re_nsub' field is available.  All other fields are   private to the regex routines.  */struct re_pattern_buffer{  /* Space that holds the compiled pattern.  It is declared as     `unsigned char *' because its elements are sometimes used as     array indexes.  */  unsigned char *_REG_RE_NAME (buffer);  /* Number of bytes to which `buffer' points.  */  __re_long_size_t _REG_RE_NAME (allocated);  /* Number of bytes actually used in `buffer'.  */  __re_long_size_t _REG_RE_NAME (used);  /* Syntax setting with which the pattern was compiled.  */  reg_syntax_t _REG_RE_NAME (syntax);  /* Pointer to a fastmap, if any, otherwise zero.  re_search uses the     fastmap, if there is one, to skip over impossible starting points     for matches.  */  char *_REG_RE_NAME (fastmap);  /* Either a translate table to apply to all characters before     comparing them, or zero for no translation.  The translation is     applied to a pattern when it is compiled and to a string when it     is matched.  */  REG_TRANSLATE_TYPE _REG_RE_NAME (translate);  /* Number of subexpressions found by the compiler.  */  size_t re_nsub;  /* Zero if this pattern cannot match the empty string, one else.     Well, in truth it's used only in `re_search_2', to see whether or     not we should use the fastmap, so we don't set this absolutely     perfectly; see `re_compile_fastmap' (the `duplicate' case).  */  unsigned int _REG_RE_NAME (can_be_null) : 1;  /* If REGS_UNALLOCATED, allocate space in the `regs' structure     for `max (RE_NREGS, re_nsub + 1)' groups.     If REGS_REALLOCATE, reallocate space if necessary.     If REGS_FIXED, use what's there.  */#ifdef __USE_GNU_REGEX# define REGS_UNALLOCATED 0# define REGS_REALLOCATE 1# define REGS_FIXED 2#endif  unsigned int _REG_RE_NAME (regs_allocated) : 2;  /* Set to zero when `regex_compile' compiles a pattern; set to one     by `re_compile_fastmap' if it updates the fastmap.  */  unsigned int _REG_RE_NAME (fastmap_accurate) : 1;  /* If set, `re_match_2' does not return information about     subexpressions.  */  unsigned int _REG_RE_NAME (no_sub) : 1;  /* If set, a beginning-of-line anchor doesn't match at the beginning     of the string.  */  unsigned int _REG_RE_NAME (not_bol) : 1;  /* Similarly for an end-of-line anchor.  */  unsigned int _REG_RE_NAME (not_eol) : 1;  /* If true, an anchor at a newline matches.  */  unsigned int _REG_RE_NAME (newline_anchor) : 1;/* [[[end pattern_buffer]]] */};typedef struct re_pattern_buffer regex_t;/* This is the structure we store register match data in.  See   regex.texinfo for a full description of what registers match.  */struct re_registers{  __re_size_t _REG_RM_NAME (num_regs);  regoff_t *_REG_RM_NAME (start);  regoff_t *_REG_RM_NAME (end);};/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,   `re_match_2' returns information about at least this many registers   the first time a `regs' structure is passed.  */#if !defined RE_NREGS && defined __USE_GNU_REGEX# define RE_NREGS 30#endif/* POSIX specification for registers.  Aside from the different names than   `re_registers', POSIX uses an array of structures, instead of a   structure of arrays.  */typedef struct{  regoff_t rm_so;  /* Byte offset from string's start to substring's start.  */  regoff_t rm_eo;  /* Byte offset from string's start to substring's end.  */} regmatch_t;/* Declarations for routines.  *//* Sets the current default syntax to SYNTAX, and return the old syntax.   You can also simply assign to the `re_syntax_options' variable.  */extern reg_syntax_t re_set_syntax (reg_syntax_t __syntax);/* Compile the regular expression PATTERN, with length LENGTH   and syntax given by the global `re_syntax_options', into the buffer   BUFFER.  Return NULL if successful, and an error string if not.  */extern const char *re_compile_pattern (const char *__pattern, size_t __length,				       struct re_pattern_buffer *__buffer);/* Compile a fastmap for the compiled pattern in BUFFER; used to   accelerate searches.  Return 0 if successful and -2 if was an   internal error.  */extern int re_compile_fastmap (struct re_pattern_buffer *__buffer);/* Search in the string STRING (with length LENGTH) for the pattern   compiled into BUFFER.  Start searching at position START, for RANGE   characters.  Return the starting position of the match, -1 for no   match, or -2 for an internal error.  Also return register   information in REGS (if REGS and BUFFER->no_sub are nonzero).  */extern regoff_t re_search (struct re_pattern_buffer *__buffer,			   const char *__string, __re_idx_t __length,			   __re_idx_t __start, regoff_t __range,			   struct re_registers *__regs);/* Like `re_search', but search in the concatenation of STRING1 and   STRING2.  Also, stop searching at index START + STOP.  */extern regoff_t re_search_2 (struct re_pattern_buffer *__buffer,			     const char *__string1, __re_idx_t __length1,			     const char *__string2, __re_idx_t __length2,			     __re_idx_t __start, regoff_t __range,			     struct re_registers *__regs,			     __re_idx_t __stop);/* Like `re_search', but return how many characters in STRING the regexp   in BUFFER matched, starting at position START.  */extern regoff_t re_match (struct re_pattern_buffer *__buffer,			  const char *__string, __re_idx_t __length,			  __re_idx_t __start, struct re_registers *__regs);/* Relates to `re_match' as `re_search_2' relates to `re_search'.  */extern regoff_t re_match_2 (struct re_pattern_buffer *__buffer,			    const char *__string1, __re_idx_t __length1,			    const char *__string2, __re_idx_t __length2,			    __re_idx_t __start, struct re_registers *__regs,			    __re_idx_t __stop);/* Set REGS to hold NUM_REGS registers, storing them in STARTS and   ENDS.  Subsequent matches using BUFFER and REGS will use this memory   for recording register information.  STARTS and ENDS must be   allocated with malloc, and must each be at least `NUM_REGS * sizeof   (regoff_t)' bytes long.   If NUM_REGS == 0, then subsequent matches should allocate their own   register data.   Unless this function is called, the first search or match using   PATTERN_BUFFER will allocate its own register data, without   freeing the old data.  */extern void re_set_registers (struct re_pattern_buffer *__buffer,			      struct re_registers *__regs,			      __re_size_t __num_regs,			      regoff_t *__starts, regoff_t *__ends);#if defined _REGEX_RE_COMP || defined _LIBC# ifndef _CRAY/* 4.2 bsd compatibility.  */extern char *re_comp (const char *);extern int re_exec (const char *);# endif#endif/* GCC 2.95 and later have "__restrict"; C99 compilers have   "restrict", and "configure" may have defined "restrict".   Other compilers use __restrict, __restrict__, and _Restrict, and   'configure' might #define 'restrict' to those words, so pick a   different name.  */#ifndef _Restrict_# if 199901L <= __STDC_VERSION__#  define _Restrict_ restrict# elif 2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__)#  define _Restrict_ __restrict# else#  define _Restrict_# endif#endif/* gcc 3.1 and up support the [restrict] syntax.  Don't trust   sys/cdefs.h's definition of __restrict_arr, though, as it   mishandles gcc -ansi -pedantic.  */#ifndef _Restrict_arr_# if ((199901L <= __STDC_VERSION__					\       || ((3 < __GNUC__ || (3 == __GNUC__ && 1 <= __GNUC_MINOR__))	\	   && !__STRICT_ANSI__))					\      && !defined __GNUG__)#  define _Restrict_arr_ _Restrict_# else#  define _Restrict_arr_# endif#endif/* POSIX compatibility.  */extern int regcomp (regex_t *_Restrict_ __preg,		    const char *_Restrict_ __pattern,		    int __cflags);extern int regexec (const regex_t *_Restrict_ __preg,		    const char *_Restrict_ __string, size_t __nmatch,		    regmatch_t __pmatch[_Restrict_arr_],		    int __eflags);extern size_t regerror (int __errcode, const regex_t *_Restrict_ __preg,			char *_Restrict_ __errbuf, size_t __errbuf_size);extern void regfree (regex_t *__preg);#ifdef __cplusplus}#endif	/* C++ */#endif /* regex.h */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -