C++中Regex使用,Regex文法以及常用Regex大全

來源:互聯網
上載者:User

     vc++2010裡正式對Regex進行支援,這無疑是vc++2010的一大亮點,給VS下c++開發人員帶來了許多方便。通過自己的使用,深感Regex的強大功能。所以總結一些簡單的介紹,並與大家共同分享。
一,什麼是Regex:
      Regex(regular expression)就是用一個“字串”來描述一個特徵,然後去驗證另一個“字串”是否符合這個特徵。是用來檢驗和操作字串的強大工具。簡單的理解Regex可以認為是一種特殊的驗證字串。比如 運算式“ab+” 描述的特徵是“一個 'a' 和 任意個 'b' ”,那麼 'ab', 'abb', 'abbbbbbbbbb' 都符合這個特徵。

二,Regex可以用來做什麼。
   Regex可以用來:
   (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
按照我們的要求,字串被匹配挑出來了。這在處理大量規則的文字格式設定的時候很有用,因為它很靈活,一通百通。
看完例子,想畢大家已經對Regex有了一個感性的認識。那麼下面介紹Regex的一些基本文法,在Regex中擁有一套自己的文法規則,常見文法包括;字元匹配、重複匹配、字元定位、轉義匹配和其他進階文法(字元分組、字元替換和字元決策)等:

字元匹配文法:

字元文法

文法解釋

文法例子

//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

匹配非Null 字元

‘//S//S//S’匹配A#4,不匹配3 d;

.

匹配任一字元

‘....’匹配A$ 5,不匹配換行;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.