22 struct real_pcre_jit_stack;
23 typedef struct real_pcre_jit_stack pcre_jit_stack;
44 static const int m_MaxNumOfBackrefrences = 20;
50 CRegExp(
bool caseless =
false, utf8Mode utf8 = asciiOnly);
61 CRegExp(
bool caseless, utf8Mode utf8,
const char *re, studyMode study = NoStudy);
73 bool RegComp(
const char *re, studyMode study = NoStudy);
82 bool RegComp(
const std::string& re, studyMode study = NoStudy)
83 {
return RegComp(re.c_str(), study); }
93 int RegFind(
const char* str,
unsigned int startoffset = 0,
int maxNumberOfCharsToTest = -1);
102 int RegFind(
const std::string& str,
unsigned int startoffset = 0,
int maxNumberOfCharsToTest = -1)
103 {
return PrivateRegFind(str.length(), str.c_str(), startoffset, maxNumberOfCharsToTest); }
104 std::string GetReplaceString(
const std::string& sReplaceExp)
const;
105 int GetFindLen()
const 107 if (!m_re || !m_bMatched)
110 return (m_iOvector[1] - m_iOvector[0]);
112 int GetSubCount()
const {
return m_iMatchCount - 1; }
113 int GetSubStart(
int iSub)
const;
114 int GetSubStart(
const std::string& subName)
const;
115 int GetSubLength(
int iSub)
const;
116 int GetSubLength(
const std::string& subName)
const;
117 int GetCaptureTotal()
const;
118 std::string GetMatch(
int iSub = 0)
const;
119 std::string GetMatch(
const std::string& subName)
const;
120 const std::string& GetPattern()
const {
return m_pattern; }
121 bool GetNamedSubPattern(
const char* strName, std::string& strMatch)
const;
122 int GetNamedSubPatternNumber(
const char* strName)
const;
123 void DumpOvector(
int iLog);
129 {
return !m_pattern.empty(); }
131 static bool IsUtf8Supported(
void);
132 static bool AreUnicodePropertiesSupported(
void);
133 static bool LogCheckUtf8Support(
void);
134 static bool IsJitSupported(
void);
137 int PrivateRegFind(
size_t bufferLen,
const char *str,
unsigned int startoffset = 0,
int maxNumberOfCharsToTest = -1);
138 void InitValues(
bool caseless =
false, CRegExp::utf8Mode utf8 = asciiOnly);
139 static bool requireUtf8(
const std::string& regexp);
140 static int readCharXCode(
const std::string& regexp,
size_t&
pos);
141 static bool isCharClassWithUnicode(
const std::string& regexp,
size_t& pos);
144 inline bool IsValidSubNumber(
int iSub)
const;
147 PCRE::pcre_extra* m_sd;
148 static const int OVECCOUNT=(m_MaxNumOfBackrefrences + 1) * 3;
149 unsigned int m_offset;
150 int m_iOvector[OVECCOUNT];
156 PCRE::pcre_jit_stack* m_jitStack;
157 std::string m_subject;
158 std::string m_pattern;
159 static int m_Utf8Supported;
160 static int m_UcpSupported;
161 static int m_JitSupported;
164 typedef std::vector<CRegExp> VECCREGEXP;
bool IsCompiled(void) const
Check is RegExp object is ready for matching.
Definition: RegExp.h:128
int RegFind(const std::string &str, unsigned int startoffset=0, int maxNumberOfCharsToTest=-1)
Find first match of regular expression in given string.
Definition: RegExp.h:102
Definition: LibInputPointer.h:13
bool RegComp(const std::string &re, studyMode study=NoStudy)
Compile (prepare) regular expression.
Definition: RegExp.h:82