基本概念这里不解释了,代码中详细解释了BOOST程序库中对于正则表达式常用方法的详细用法。
#include <iostream>
#include <string>//正则表达式头文件
#include <boost/xpressive/xpressive.hpp>int main() {//声明正则:boost::pressive::cregexboost::xpressive::cregex reg = boost::xpressive::cregex::compile("a.c");//匹配正则:boost::pressive::cregex_matchif (boost::xpressive::regex_match("abc", reg)) {std::cout << "匹配成功" << std::endl;}else {std::cout << "匹配失败!" << std::endl;}if (boost::xpressive::regex_match("a=c", reg)) {std::cout << "匹配成功" << std::endl;}else {std::cout << "匹配失败!" << std::endl;}if (boost::xpressive::regex_match("a+c", reg)) {std::cout << "匹配成功" << std::endl;}else {std::cout << "匹配失败!" << std::endl;}//字符串正则://声明正则:622421197706251568//R"(\d{6}(1|2)\d{3}(0|1)\d[0-3]\d\d{3}(X|\d))"boost::xpressive::cregex reg1 = boost::xpressive::cregex::compile(R"(622421(1|2)\d{3}(0|1)[1-9][1-3][0-9]\d{3}(\d|X))");std::cout << boost::xpressive::regex_match("62242119770611231X", reg1) << std::endl;std::cout << boost::xpressive::regex_match("622421200506111765", reg1) << std::endl;std::cout << boost::xpressive::regex_match("622421162506311564", reg1) << std::endl;std::cout << boost::xpressive::regex_match("62242115960621231X", reg1) << std::endl;std::cout << boost::xpressive::regex_match("622421200412452156", reg1) << std::endl;boost::xpressive::cregex reg3 = boost::xpressive::cregex::compile("string-(.{4})");char Str[] = "this is a string-xxxx";boost::xpressive::cmatch what;boost::xpressive::regex_search(Str, what, reg3);//正则表达式,匹配成功后替换:std::string Str1 = "readmereadme.txt";boost::xpressive::sregex regg1 = boost::xpressive::sregex::compile("(.*)(me)");boost::xpressive::sregex regg2 = boost::xpressive::sregex::compile("(t)(.)(t)");//替换:$1代表找到的m的位置std::cout << boost::xpressive::regex_replace(Str1, regg1, "$1ing") << std::endl; //readmereading.txtstd::cout << boost::xpressive::regex_replace(Str1, regg1, "ing") << std::endl; //ing.txtstd::cout << boost::xpressive::regex_replace(Str1, regg1, "$1L$2") << std::endl; //readmereadLme.txtstd::cout << boost::xpressive::regex_replace(Str1, regg2, "$1L$3") << std::endl; //readmereadme.tLt//替换文件名:std::cout << boost::xpressive::regex_replace(Str1, regg2, "$1exe") << std::endl; //readmereadme.texestd::cout << boost::xpressive::regex_replace(Str1, regg2, "$1L$2") << std::endl; //readmereadme.tLxsystem("pause");return 0;
}