Libpcre

From 탱이의 잡동사니
Revision as of 13:04, 19 August 2016 by Pchero (talk | contribs) (→‎Basic)
Jump to navigation Jump to search

Overview

libpcre 내용 정리

Basic

pcre_exec/pcre16_exec

<source lang=c>

  1. include <pcre.h>

int pcre_exec(const pcre *code, const pcre_extra *extra,

   const char *subject, int length, int startoffset,
   int options, int *ovector, int ovecsize);

int pcre16_exec(const pcre16 *code, const pcre16_extra *extra,

   PCRE_SPTR16 subject, int length, int startoffset,
   int options, int *ovector, int ovecsize);

</source>

  • code : Points to the compiled pattern.
  • extra : Points to an associated pcre[16]_extra structure, or is NULL.
  • subject : Points to the subject string.
  • length : Length of the subject string, in bytes.
  • startoffset : Offset in bytes in the subject at which to start matching.
  • options : Option bits.
  • ovector : Points to a vector of ints for result offsets.
  • ovecsize : Number of elements in the vector(a multiple of 3)

Options

PCRE_ANCHORED          Match only at the first position
PCRE_BSR_ANYCRLF       \R matches only CR, LF, or CRLF
PCRE_BSR_UNICODE       \R matches all Unicode line endings
PCRE_NEWLINE_ANY       Recognize any Unicode newline sequence
PCRE_NEWLINE_ANYCRLF   Recognize CR, LF, & CRLF as newline sequences
PCRE_NEWLINE_CR        Recognize CR as the only newline sequence
PCRE_NEWLINE_CRLF      Recognize CRLF as the only newline sequence
PCRE_NEWLINE_LF        Recognize LF as the only newline sequence
PCRE_NOTBOL            Subject string is not the beginning of a line
PCRE_NOTEOL            Subject string is not the end of a line
PCRE_NOTEMPTY          An empty string is not a valid match
PCRE_NOTEMPTY_ATSTART  An empty string at the start of the subject is not a valid match
PCRE_NO_START_OPTIMIZE Do not do "start-match" optimizations
PCRE_NO_UTF16_CHECK    Do not check the subject for UTF-16 validity (only relevant if PCRE_UTF16 was set at compile time)
PCRE_NO_UTF8_CHECK     Do not check the subject for UTF-8 validity (only relevant if PCRE_UTF8 was set at compile time)
PCRE_PARTIAL           ) Return PCRE_ERROR_PARTIAL for a partial
PCRE_PARTIAL_SOFT      )   match if no full matches are found
PCRE_PARTIAL_HARD      Return PCRE_ERROR_PARTIAL for a partial match if that is found before a full match

pcre_get_substring/pcre16_get_substring

<source lang=c>

  1. include <pcre.h>

int pcre_get_substring(const char *subject, int *ovector,

   int stringcount, int stringnumber,
   const char **stringptr);

int pcre16_get_substring(PCRE_SPTR16 subject, int *ovector,

   int stringcount, int stringnumber,
   PCRE_SPTR16 *stringptr);

</source>

  • subject Subject that has been successfully matched
  • ovector Offset vector that pcre[16]_exec() used
  • stringcount Value returned by pcre[16]_exec()
  • stringnumber Number of the required substring
  • stringptr Where to put the string pointer