不需要boost::regex库的能进行正则表达式的代码?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不需要boost::regex库的能进行正则表达式的代码?相关的知识,希望对你有一定的参考价值。
参考技术A 可以啊,2008以后版本的STL提供了正则表达式,不需要boost也可以用了下面是我给别人写的一个例子
#include
"stdafx.h"
#include
"stdio.h"
#include
<regex>
#define
TR1
std::tr1
void
main()
///
读取文件实例代码,你自己修改一下路径.
//
std::ifstream
file("路径");
//
///
读取文件的内容.
//
std::string
sFileContent(std::istreambuf_iterator<char>(file.rdbuf()),
std::istreambuf_iterator<char>());
///
为了方便测试,我把你的文件内容直接弄成字符串了.
const
std::string
sFileContent("\
INPUT(G1gat)\n\
INPUT(G2gat)\n\
INPUT(G3gat)\n\
INPUT(G6gat)\n\
INPUT(G7gat)\n\
OUTPUT(G22gat)\n\
OUTPUT(G23gat)\n\
G10gat
=
nand(G1gat,
G3gat)\n\
G11gat
=
nand(G3gat,
G6gat)\n\
G16gat
=
nand(G2gat,
G11gat)\n\
G19gat
=
nand(G11gat,
G7gat)\n\
G22gat
=
nand(G10gat,
G16gat)\n\
G23gat
=
nand(G16gat,
G19gat)\n\
");
TR1::regex
regInput("INPUT\\(G([\\d])gat\\)");
TR1::smatch
matchRes;
int
nMatchFlag
=
TR1::regex_constants::match_default;
std::string::const_iterator
itBegin,
itEnd;
itBegin
=
sFileContent.begin();
itEnd
=
sFileContent.end();
while
(std::tr1::regex_search(itBegin,
itEnd,
matchRes,
regInput,
(TR1::regex_constants::match_flag_type)nMatchFlag))
std::cout
<<
"匹配结果:
"
<<
matchRes[0]
<<
std::endl;
std::cout
<<
"匹配到的数字:
"
<<
matchRes[1]
<<
std::endl;
itBegin
=
matchRes[0].second;
nMatchFlag
=
std::tr1::regex_constants::match_prev_avail|std::tr1::regex_constants::match_not_bol;
Boost之正则表达式Regex库的使用方法
这个程序可以简洁的挑出了目标字符串。#include <cstdlib>
#include <stdlib.h>
#include <boost/regex.hpp>
#include <stdlib.h>
#include <string>
#include <iostream>
using namespace std;
using namespace boost;
regex expression("^select ([a-zA-Z]*) from ([a-zA-Z]*)");//定义正则表达式expression
int main(int argc, char* argv[])
{
std::string in;
cmatch what;
cout << "enter test string" << endl;
getline(cin,in);
if(regex_match(in.c_str(), what, expression))//regex_match:匹配算法,用于测试一个字符串是否和正则式匹配
{
for(int i=0;i<what.size();i++)
cout<<"str :"<<what[i].str()<<endl;
}
else
{
cout<<"Error Input"<<endl;
}
system("pause");
return 0;
}
以上是关于不需要boost::regex库的能进行正则表达式的代码?的主要内容,如果未能解决你的问题,请参考以下文章