C++中正则表达式使用,正则表达式语法以及常用正则表达式大全

来源:互联网 发布:网络信息安全涉及 编辑:程序博客网 时间:2024/04/30 12:39

     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
按照我们的要求,字符串被匹配挑出来了。这在处理大量规则的文本格式的时候很有用,因为它很灵活,一通百通。
看完例子,想毕大家已经对正则表达式有了一个感性的认识。
那么下面介绍正则表达式的一些基本语法,在正则表达式中拥有一套自己的语法规则,常见语法包括;字符匹配、重复匹配、字符定位、转义匹配和其他高级语法(字符分组、字符替换和字符决策)等:

字符匹配语法:

字符语法

语法解释

语法例子

//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,不匹配换行;

%0
原创粉丝点击