C++使用正则表达式
正则表达式在文本的查找和替换方面十分强大,最近恰巧用到,记录如下。
使用的语言是C++,需要包含regex头文件,下面的代码是对linux系统路径的判别,我们假定路径都是下面这样的:
- ./abcd
- …/abcd
- /abcd/efg
#include <stdio.h>
#include <string>
#include <regex>
#include <exception>
#include <iostream>
using namespace std;
#define PATH_PATTERN "(^\\.|\\.\\.|/)[\\w/]+"
int main(int argc, char *argv[])
{
printf("regex demo!\n");
try
{
regex r(PATH_PATTERN);
string str("/home/test\n./test\n../test\n 1234abcd\n/1234/abcd\n");
for (sregex_iterator iter(str.begin(), str.end(), r), end_iter; iter != end_iter; ++iter)
{
printf("find match string : %s !\n", (*iter).str().c_str());
}
}
catch (const std::exception &e)
{
std::cerr << e.what() << '\n';
}
return 0;
}
执行的结果是:
下面的导图总结了基本的正则表达式使用规则。