vc++2010里正式对正则表达式进行支持,这无疑是vc++2010的一大亮点,给VS下c++开发者带来了许多方便。通过自己的使用,深感正则表达式的强大功能。所以总结一些简单的介绍,并与大家共同分享。
一,什么是正则表达式:
正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。是用来检验和操作字符串的强大工具。简单的理解正则表达式可以认为是一种特殊的验证字符串。比如 表达式“ab+” 描述的特征是“一个 'a' 和 任意个 'b' ”,那么 'ab', 'abb', 'abbbbbbbbbb' 都符合这个特征。
二,正则表达式可以用来做什么?
正则表达式可以用来:
(1)验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。
(2)用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。
(3)用来替换,比普通的替换更强大。
三,简介及基本语法:
先看网上一个经典的例子:
#include "stdafx.h"
#include <cstdlib>
#include <stdlib.h>
#include <boost/regex.hpp>
#include <string>
#include <iostream>
using namespace std;
using namespace boost;
regex expression("^select ([a-zA-Z]*) from ([a-zA-Z]*)");
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))
{
for(int i=0;i<what.size();i++)
cout<<"str :"<<what[i].str()<<endl;
}
else
{
cout<<"Error Input"<<endl;
}
return 0;
}
结果
输入:select name from table
输出:str:select name from table
str:name
str:table
按照我们的要求,字符串被匹配挑出来了。这在处理大量规则的文本格式的时候很有用,因为它很灵活,一通百通。
看完例子,想毕大家已经对正则表达式有了一个感性的认识。那么下面介绍正则表达式的一些基本语法,在正则表达式中拥有一套自己的语法规则,常见语法包括;字符匹配、重复匹配、字符定位、转义匹配和其他高级语法(字符分组、字符替换和字符决策)等:
字符匹配语法:
yjjie: CAO NI MA个卸载向导,害老子把vs 给删了
penglv789: 学习学习
yb410411433: 下载下来试试
hugaozhuang: 下载哪一个啊??
cai_niao_yi_zhi: 不错,收获不少!
haixingkl: 急需解决方法!有谁能告诉我!
haixingkl: 为什么不能激活啊!每次都提示:无效的许可证数据。需要重新安装。是不是KEY不能用了!!!有新的key...
qwx123_abc: 好
lgh92: 留名。顶。刚学。
c372662316: 回复 volkswageos:den它自动过期时,让你输入密钥,你把上面序列号复制贴上去激活就行了
字符语法 |
语法解释 |
语法例子 |
//d |
匹配数字(0~9) |
‘//d’匹配8,不匹配12; |
//D |
匹配非数字 |
‘//D’匹配c,不匹配3; |
//w |
匹配任意单字符 |
‘//w//w’ 匹配A3,不匹配@3; |
//W |
匹配非单字符 |
‘//W’匹配@,不匹配c; |
//s |
匹配空白字符 |
‘//d//s//d’匹配3 d,不匹配abc; |
//S |
匹配非空字符 |
‘//S//S//S’匹配A#4,不匹配3 d; |
. |
匹配任意字符 |
‘....’匹配A$ 5,不匹配换行; |