src/core/ngx_regex.h - nginx source code

Data types defined

Macros defined

Source code


  1. /*
  2. * Copyright (C) Igor Sysoev
  3. * Copyright (C) Nginx, Inc.
  4. */


  5. #ifndef _NGX_REGEX_H_INCLUDED_
  6. #define _NGX_REGEX_H_INCLUDED_


  7. #include <ngx_config.h>
  8. #include <ngx_core.h>


  9. #if (NGX_PCRE2)

  10. #define PCRE2_CODE_UNIT_WIDTH  8
  11. #include <pcre2.h>

  12. #define NGX_REGEX_NO_MATCHED   PCRE2_ERROR_NOMATCH   /* -1 */

  13. typedef pcre2_code  ngx_regex_t;

  14. #else

  15. #include <pcre.h>

  16. #define NGX_REGEX_NO_MATCHED   PCRE_ERROR_NOMATCH    /* -1 */

  17. typedef struct {
  18.     pcre        *code;
  19.     pcre_extra  *extra;
  20. } ngx_regex_t;

  21. #endif


  22. #define NGX_REGEX_CASELESS     0x00000001
  23. #define NGX_REGEX_MULTILINE    0x00000002


  24. typedef struct {
  25.     ngx_str_t     pattern;
  26.     ngx_pool_t   *pool;
  27.     ngx_uint_t    options;

  28.     ngx_regex_t  *regex;
  29.     int           captures;
  30.     int           named_captures;
  31.     int           name_size;
  32.     u_char       *names;
  33.     ngx_str_t     err;
  34. } ngx_regex_compile_t;


  35. typedef struct {
  36.     ngx_regex_t  *regex;
  37.     u_char       *name;
  38. } ngx_regex_elt_t;


  39. void ngx_regex_init(void);
  40. ngx_int_t ngx_regex_compile(ngx_regex_compile_t *rc);

  41. ngx_int_t ngx_regex_exec(ngx_regex_t *re, ngx_str_t *s, int *captures,
  42.     ngx_uint_t size);

  43. #if (NGX_PCRE2)
  44. #define ngx_regex_exec_n       "pcre2_match()"
  45. #else
  46. #define ngx_regex_exec_n       "pcre_exec()"
  47. #endif

  48. ngx_int_t ngx_regex_exec_array(ngx_array_t *a, ngx_str_t *s, ngx_log_t *log);


  49. #endif /* _NGX_REGEX_H_INCLUDED_ */