logmeow/pcre2_wrapper.cpp

32 lines
817 B
C++

#include "pcre2_wrapper.h"
Pcre2Exception::Pcre2Exception(int error_code, const regex_t* regex) {
pcre2_regerror(error_code, regex, this->_error_message, 1024);
}
const char* Pcre2Exception::what() const noexcept {
return this->_error_message;
}
Pcre2Regex::Pcre2Regex(const char* pattern, int cflags) {
int res = pcre2_regcomp(&this->_regex, pattern, cflags);
if (res) {
throw Pcre2Exception(res);
}
}
Pcre2Regex::~Pcre2Regex() {
pcre2_regfree(&this->_regex);
}
bool Pcre2Regex::match(const char* str, size_t nmatch, regmatch_t pmatch[], int eflags) const {
int res = pcre2_regexec(&this->_regex, str, nmatch, pmatch, eflags);
if (res == REG_NOMATCH) {
return false;
}
if (res) {
throw Pcre2Exception(res, &this->_regex);
}
return true;
}