# pcre

- Manual
- Standard library
- Index

Search:
Group by:

Exec-time and get/set-time error codesSpecific error codes for UTF-8 validity checksSpecific error codes for UTF-16 validity checksSpecific error codes for UTF-32 validity checksRequest types for pcre_fullinfo()Request types for pcre_config(). Do not re-arrange, in order to remain compatible.Request types for pcre_study(). Do not re-arrange, in order to remain compatible.Bit flags for the pcre[16|32]_extra structure. Do not re-arrange or redefine these bits, just add new ones on the end, in order to remain compatible.TypesThe structure for passing additional data to pcre_exec(). This is defined in such as way as to be extensible. Always add new fields at the end, in order to remain compatible.The structure for passing out data via the pcre_callout_function. We use a structure so that new fields can be added on the end in future versions, without changing the API of the function, thereby allowing old clients to work without modification.User defined callback which provides a stack just before the match starts.

# Types

    Pcre = object

  Source Edit

    Pcre16 = object

  Source Edit

    Pcre32 = object

  Source Edit

    JitStack = object

  Source Edit

    JitStack16 = object

  Source Edit

    JitStack32 = object

  Source Edit

    ExtraData = object
      flags*: clong                ## Bits for which fields are set
      study_data*: pointer         ## Opaque data from pcre_study()
      match_limit*: clong          ## Maximum number of calls to match()
      callout_data*: pointer       ## Data passed back in callouts
      tables*: pointer             ## Pointer to character tables
      match_limit_recursion*: clong ## Max recursive calls to match()
      mark*: pointer               ## For passing back a mark pointer
      executable_jit*: pointer     ## Contains a pointer to a compiled jit code

  Source Edit

    CalloutBlock = object
      version*: cint               ## Identifies version of block
      callout_number*: cint        ## Number compiled into pattern
      offset_vector*: ptr cint      ## The offset vector
      subject*: cstring            ## The subject being matched
      subject_length*: cint        ## The length of the subject
      start_match*: cint           ## Offset to start of this match attempt
      current_position*: cint      ## Where we currently are in the subject
      capture_top*: cint           ## Max current capture
      capture_last*: cint          ## Most recently closed capture
      callout_data*: pointer       ## Data passed in with the call
      pattern_position*: cint      ## Offset to next item in the pattern
      next_item_length*: cint      ## Length of next item in the pattern
      mark*: pointer               ## Pointer to current mark or NULL

  Source Edit

    JitCallback = proc (a: pointer): ptr JitStack {...}{.cdecl.}

  Source Edit

    PPcre {...}{.deprecated.} = ptr Pcre

  Source Edit

    PJitStack {...}{.deprecated.} = ptr JitStack

  Source Edit

# Consts

    PCRE_MAJOR = 8

  Source Edit

    PCRE_MINOR = 36

  Source Edit

    PCRE_PRERELEASE = true

  Source Edit

    PCRE_DATE = "2014-09-26"

  Source Edit

    CASELESS = 0x00000001

  Source Edit

    MULTILINE = 0x00000002

  Source Edit

    DOTALL = 0x00000004

  Source Edit

    EXTENDED = 0x00000008

  Source Edit

    ANCHORED = 0x00000010

  Source Edit

    DOLLAR_ENDONLY = 0x00000020

  Source Edit

    EXTRA = 0x00000040

  Source Edit

    NOTBOL = 0x00000080

  Source Edit

    NOTEOL = 0x00000100

  Source Edit

    UNGREEDY = 0x00000200

  Source Edit

    NOTEMPTY = 0x00000400

  Source Edit

    UTF8 = 0x00000800

  Source Edit

    UTF16 = 0x00000800

  Source Edit

    UTF32 = 0x00000800

  Source Edit

    NO_AUTO_CAPTURE = 0x00001000

  Source Edit

    NO_UTF8_CHECK = 0x00002000

  Source Edit

    NO_UTF16_CHECK = 0x00002000

  Source Edit

    NO_UTF32_CHECK = 0x00002000

  Source Edit

    AUTO_CALLOUT = 0x00004000

  Source Edit

    PARTIAL_SOFT = 0x00008000

  Source Edit

    PARTIAL = 0x00008000

  Source Edit

    NEVER_UTF = 0x00010000

  Source Edit

    DFA_SHORTEST = 0x00010000

  Source Edit

    NO_AUTO_POSSESS = 0x00020000

  Source Edit

    DFA_RESTART = 0x00020000

  Source Edit

    FIRSTLINE = 0x00040000

  Source Edit

    DUPNAMES = 0x00080000

  Source Edit

    NEWLINE_CR = 0x00100000

  Source Edit

    NEWLINE_LF = 0x00200000

  Source Edit

    NEWLINE_CRLF = 0x00300000

  Source Edit

    NEWLINE_ANY = 0x00400000

  Source Edit

    NEWLINE_ANYCRLF = 0x00500000

  Source Edit

    BSR_ANYCRLF = 0x00800000

  Source Edit

    BSR_UNICODE = 0x01000000

  Source Edit

    JAVASCRIPT_COMPAT = 0x02000000

  Source Edit

    NO_START_OPTIMIZE = 0x04000000

  Source Edit

    NO_START_OPTIMISE = 0x04000000

  Source Edit

    PARTIAL_HARD = 0x08000000

  Source Edit

    NOTEMPTY_ATSTART = 0x10000000

  Source Edit

    UCP = 0x20000000

  Source Edit

    ERROR_NOMATCH = -1

  Source Edit

    ERROR_NULL = -2

  Source Edit

    ERROR_BADOPTION = -3

  Source Edit

    ERROR_BADMAGIC = -4

  Source Edit

    ERROR_UNKNOWN_OPCODE = -5

  Source Edit

    ERROR_UNKNOWN_NODE = -5

  For backward compatibility Source Edit

    ERROR_NOMEMORY = -6

  Source Edit

    ERROR_NOSUBSTRING = -7

  Source Edit

    ERROR_MATCHLIMIT = -8

  Source Edit

    ERROR_CALLOUT = -9

  Never used by PCRE itself Source Edit

    ERROR_BADUTF8 = -10

  Same for 8/16/32 Source Edit

    ERROR_BADUTF16 = -10

  Same for 8/16/32 Source Edit

    ERROR_BADUTF32 = -10

  Same for 8/16/32 Source Edit

    ERROR_BADUTF8_OFFSET = -11

  Same for 8/16 Source Edit

    ERROR_BADUTF16_OFFSET = -11

  Same for 8/16 Source Edit

    ERROR_PARTIAL = -12

  Source Edit

    ERROR_BADPARTIAL = -13

  Source Edit

    ERROR_INTERNAL = -14

  Source Edit

    ERROR_BADCOUNT = -15

  Source Edit

    ERROR_DFA_UITEM = -16

  Source Edit

    ERROR_DFA_UCOND = -17

  Source Edit

    ERROR_DFA_UMLIMIT = -18

  Source Edit

    ERROR_DFA_WSSIZE = -19

  Source Edit

    ERROR_DFA_RECURSE = -20

  Source Edit

    ERROR_RECURSIONLIMIT = -21

  Source Edit

    ERROR_NULLWSLIMIT = -22

  No longer actually used Source Edit

    ERROR_BADNEWLINE = -23

  Source Edit

    ERROR_BADOFFSET = -24

  Source Edit

    ERROR_SHORTUTF8 = -25

  Source Edit

    ERROR_SHORTUTF16 = -25

  Same for 8/16 Source Edit

    ERROR_RECURSELOOP = -26

  Source Edit

    ERROR_JIT_STACKLIMIT = -27

  Source Edit

    ERROR_BADMODE = -28

  Source Edit

    ERROR_BADENDIANNESS = -29

  Source Edit

    ERROR_DFA_BADRESTART = -30

  Source Edit

    ERROR_JIT_BADOPTION = -31

  Source Edit

    ERROR_BADLENGTH = -32

  Source Edit

    ERROR_UNSET = -33

  Source Edit

    UTF8_ERR0 = 0

  Source Edit

    UTF8_ERR1 = 1

  Source Edit

    UTF8_ERR2 = 2

  Source Edit

    UTF8_ERR3 = 3

  Source Edit

    UTF8_ERR4 = 4

  Source Edit

    UTF8_ERR5 = 5

  Source Edit

    UTF8_ERR6 = 6

  Source Edit

    UTF8_ERR7 = 7

  Source Edit

    UTF8_ERR8 = 8

  Source Edit

    UTF8_ERR9 = 9

  Source Edit

    UTF8_ERR10 = 10

  Source Edit

    UTF8_ERR11 = 11

  Source Edit

    UTF8_ERR12 = 12

  Source Edit

    UTF8_ERR13 = 13

  Source Edit

    UTF8_ERR14 = 14

  Source Edit

    UTF8_ERR15 = 15

  Source Edit

    UTF8_ERR16 = 16

  Source Edit

    UTF8_ERR17 = 17

  Source Edit

    UTF8_ERR18 = 18

  Source Edit

    UTF8_ERR19 = 19

  Source Edit

    UTF8_ERR20 = 20

  Source Edit

    UTF8_ERR21 = 21

  Source Edit

    UTF8_ERR22 = 22

  Source Edit

    UTF16_ERR0 = 0

  Source Edit

    UTF16_ERR1 = 1

  Source Edit

    UTF16_ERR2 = 2

  Source Edit

    UTF16_ERR3 = 3

  Source Edit

    UTF16_ERR4 = 4

  Source Edit

    UTF32_ERR0 = 0

  Source Edit

    UTF32_ERR1 = 1

  Source Edit

    UTF32_ERR2 = 2

  Source Edit

    UTF32_ERR3 = 3

  Source Edit

    INFO_OPTIONS = 0

  Source Edit

    INFO_SIZE = 1

  Source Edit

    INFO_CAPTURECOUNT = 2

  Source Edit

    INFO_BACKREFMAX = 3

  Source Edit

    INFO_FIRSTBYTE = 4

  Source Edit

    INFO_FIRSTCHAR = 4

  For backwards compatibility Source Edit

    INFO_FIRSTTABLE = 5

  Source Edit

    INFO_LASTLITERAL = 6

  Source Edit

    INFO_NAMEENTRYSIZE = 7

  Source Edit

    INFO_NAMECOUNT = 8

  Source Edit

    INFO_NAMETABLE = 9

  Source Edit

    INFO_STUDYSIZE = 10

  Source Edit

    INFO_DEFAULT_TABLES = 11

  Source Edit

    INFO_OKPARTIAL = 12

  Source Edit

    INFO_JCHANGED = 13

  Source Edit

    INFO_HASCRORLF = 14

  Source Edit

    INFO_MINLENGTH = 15

  Source Edit

    INFO_JIT = 16

  Source Edit

    INFO_JITSIZE = 17

  Source Edit

    INFO_MAXLOOKBEHIND = 18

  Source Edit

    INFO_FIRSTCHARACTER = 19

  Source Edit

    INFO_FIRSTCHARACTERFLAGS = 20

  Source Edit

    INFO_REQUIREDCHAR = 21

  Source Edit

    INFO_REQUIREDCHARFLAGS = 22

  Source Edit

    INFO_MATCHLIMIT = 23

  Source Edit

    INFO_RECURSIONLIMIT = 24

  Source Edit

    INFO_MATCH_EMPTY = 25

  Source Edit

    CONFIG_UTF8 = 0

  Source Edit

    CONFIG_NEWLINE = 1

  Source Edit

    CONFIG_LINK_SIZE = 2

  Source Edit

    CONFIG_POSIX_MALLOC_THRESHOLD = 3

  Source Edit

    CONFIG_MATCH_LIMIT = 4

  Source Edit

    CONFIG_STACKRECURSE = 5

  Source Edit

    CONFIG_UNICODE_PROPERTIES = 6

  Source Edit

    CONFIG_MATCH_LIMIT_RECURSION = 7

  Source Edit

    CONFIG_BSR = 8

  Source Edit

    CONFIG_JIT = 9

  Source Edit

    CONFIG_UTF16 = 10

  Source Edit

    CONFIG_JITTARGET = 11

  Source Edit

    CONFIG_UTF32 = 12

  Source Edit

    CONFIG_PARENS_LIMIT = 13

  Source Edit

    STUDY_JIT_COMPILE = 0x00000001

  Source Edit

    STUDY_JIT_PARTIAL_SOFT_COMPILE = 0x00000002

  Source Edit

    STUDY_JIT_PARTIAL_HARD_COMPILE = 0x00000004

  Source Edit

    STUDY_EXTRA_NEEDED = 0x00000008

  Source Edit

    EXTRA_STUDY_DATA = 0x00000001

  Source Edit

    EXTRA_MATCH_LIMIT = 0x00000002

  Source Edit

    EXTRA_CALLOUT_DATA = 0x00000004

  Source Edit

    EXTRA_TABLES = 0x00000008

  Source Edit

    EXTRA_MATCH_LIMIT_RECURSION = 0x00000010

  Source Edit

    EXTRA_MARK = 0x00000020

  Source Edit

    EXTRA_EXECUTABLE_JIT = 0x00000040

  Source Edit

# Procs

    proc compile(pattern: cstring; options: cint; errptr: ptr cstring; erroffset: ptr cint;
                tableptr: pointer): ptr Pcre {...}{.cdecl, importc: "pcre_$1".}

  Source Edit

    proc compile2(pattern: cstring; options: cint; errorcodeptr: ptr cint;
                 errptr: ptr cstring; erroffset: ptr cint; tableptr: pointer): ptr Pcre {...}{.
        cdecl, importc: "pcre_$1".}

  Source Edit

    proc config(what: cint; where: pointer): cint {...}{.cdecl, importc: "pcre_$1".}

  Source Edit

    proc copy_named_substring(code: ptr Pcre; subject: cstring; ovector: ptr cint;
                             stringcount: cint; stringname: cstring; buffer: cstring;
                             buffersize: cint): cint {...}{.cdecl, importc: "pcre_$1".}

  Source Edit

    proc copy_substring(subject: cstring; ovector: ptr cint; stringcount: cint;
                       stringnumber: cint; buffer: cstring; buffersize: cint): cint {...}{.
        cdecl, importc: "pcre_$1".}

  Source Edit

    proc dfa_exec(code: ptr Pcre; extra: ptr ExtraData; subject: cstring; length: cint;
                 startoffset: cint; options: cint; ovector: ptr cint; ovecsize: cint;
                 workspace: ptr cint; wscount: cint): cint {...}{.cdecl, importc: "pcre_$1".}

  Source Edit

    proc exec(code: ptr Pcre; extra: ptr ExtraData; subject: cstring; length: cint;
             startoffset: cint; options: cint; ovector: ptr cint; ovecsize: cint): cint {...}{.
        cdecl, importc: "pcre_$1".}

  Source Edit

    proc jit_exec(code: ptr Pcre; extra: ptr ExtraData; subject: cstring; length: cint;
                 startoffset: cint; options: cint; ovector: ptr cint; ovecsize: cint;
                 jstack: ptr JitStack): cint {...}{.cdecl, importc: "pcre_$1".}

  Source Edit

    proc free_substring(stringptr: cstring) {...}{.cdecl, importc: "pcre_$1".}

  Source Edit

    proc free_substring_list(stringptr: cstringArray) {...}{.cdecl, importc: "pcre_$1".}

  Source Edit

    proc fullinfo(code: ptr Pcre; extra: ptr ExtraData; what: cint; where: pointer): cint {...}{.
        cdecl, importc: "pcre_$1".}

  Source Edit

    proc get_named_substring(code: ptr Pcre; subject: cstring; ovector: ptr cint;
                            stringcount: cint; stringname: cstring;
                            stringptr: cstringArray): cint {...}{.cdecl, importc: "pcre_$1".}

  Source Edit

    proc get_stringnumber(code: ptr Pcre; name: cstring): cint {...}{.cdecl, importc: "pcre_$1".}

  Source Edit

    proc get_stringtable_entries(code: ptr Pcre; name: cstring; first: cstringArray;
                                last: cstringArray): cint {...}{.cdecl, importc: "pcre_$1".}

  Source Edit

    proc get_substring(subject: cstring; ovector: ptr cint; stringcount: cint;
                      stringnumber: cint; stringptr: cstringArray): cint {...}{.cdecl,
        importc: "pcre_$1".}

  Source Edit

    proc get_substring_list(subject: cstring; ovector: ptr cint; stringcount: cint;
                           listptr: ptr cstringArray): cint {...}{.cdecl, importc: "pcre_$1".}

  Source Edit

    proc maketables(): pointer {...}{.cdecl, importc: "pcre_$1".}

  Source Edit

    proc refcount(code: ptr Pcre; adjust: cint): cint {...}{.cdecl, importc: "pcre_$1".}

  Source Edit

    proc study(code: ptr Pcre; options: cint; errptr: ptr cstring): ptr ExtraData {...}{.cdecl,
        importc: "pcre_$1".}

  Source Edit

    proc free_study(extra: ptr ExtraData) {...}{.cdecl, importc: "pcre_$1".}

  Source Edit

    proc version(): cstring {...}{.cdecl, importc: "pcre_$1".}

  Source Edit

    proc pattern_to_host_byte_order(code: ptr Pcre; extra: ptr ExtraData; tables: pointer): cint {...}{.
        cdecl, importc: "pcre_$1".}

  Source Edit

    proc jit_stack_alloc(startsize: cint; maxsize: cint): ptr JitStack {...}{.cdecl,
        importc: "pcre_$1".}

  Source Edit

    proc jit_stack_free(stack: ptr JitStack) {...}{.cdecl, importc: "pcre_$1".}

  Source Edit

    proc assign_jit_stack(extra: ptr ExtraData; callback: JitCallback; data: pointer) {...}{.
        cdecl, importc: "pcre_$1".}

  Source Edit

    proc jit_free_unused_memory() {...}{.cdecl, importc: "pcre_$1".}

  Source Edit

    proc study(code: ptr Pcre; options: cint; errptr: var cstring): ptr ExtraData {...}{.deprecated,
        cdecl, importc: "pcre_$1".}

  Deprecated
  Source Edit