28 lines
633 B
C
28 lines
633 B
C
|
#pragma once
|
||
|
|
||
|
#include <exception>
|
||
|
#include <pcre2posix.h>
|
||
|
|
||
|
class Pcre2Exception : public std::exception {
|
||
|
public:
|
||
|
Pcre2Exception(int error_code, const regex_t* regex = nullptr);
|
||
|
const char* what() const noexcept;
|
||
|
|
||
|
private:
|
||
|
char _error_message[1024];
|
||
|
};
|
||
|
|
||
|
class Pcre2Regex {
|
||
|
public:
|
||
|
// https://stackoverflow.com/a/2173764
|
||
|
Pcre2Regex(const Pcre2Regex&) = delete;
|
||
|
Pcre2Regex& operator=(const Pcre2Regex&) = delete;
|
||
|
|
||
|
Pcre2Regex(const char* pattern, int cflags = 0);
|
||
|
~Pcre2Regex();
|
||
|
bool match(const char* str, size_t nmatch, regmatch_t pmatch[], int eflags = 0) const;
|
||
|
|
||
|
private:
|
||
|
regex_t _regex;
|
||
|
};
|