rx++.h
来自「主要用于编译器/解释器中处理正则表达式的一个类。」· C头文件 代码 · 共 72 行
H
72 行
// rx++
// A simple C++ regexp class based on the
// GNU RX library
#ifndef __RXPLUS_H
#define __RXPLUS_H
// dynamically link to RX
#lib rx.dll
#include "regexp.h"
#lib
const int _NM_ = 20;
regmatch_t _rm_[_NM_];
class Regexp {
private:
regex_t m_rx;
int m_ret;
char* m_str;
public:
Regexp(char *pat = NULL, int flags = 0) {
m_ret = regcomp(&m_rx,pat,flags);
}
~Regexp() {
regfree(&m_rx);
}
bool is_ok()
{ return m_ret == 0; }
bool match(char *str, int flags = 0) {
m_str = str;
m_ret = regexec(&m_rx,str,_NM_,_rm_,flags);
return m_ret == 0;
}
void get_error(string& err) {
int len = regerror(m_ret,&m_rx,NULL,0); // how big is error string?
char *buff = new char[len];
regerror(m_ret,&m_rx,buff,len); // fetch the error...
err = buff;
delete buff;
}
bool match(const string& s, int flags = 0)
{ return match(s.c_str(),flags); }
int index() {
return _rm_[0].rm_so;
}
bool operator= (char *p)
{ return match(p); }
bool operator= (const string& s)
{ return match(s); }
string matched(int idx = 0)
{
if (_rm_[idx].rm_so == -1) return "";
string s = m_str;
int start = _rm_[idx].rm_so;
int finish = _rm_[idx].rm_eo;
return s.substr(start,finish - start);
}
};
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?