用正則表達式分離C++字符串string

用正則表達式分離C++字符串string,寫了一個小例子。
#include "stdafx.h"
#include <regex>  
#include <string>
#include <vector>
#include <iostream>
using namespace std;html

#define PATTERN "[\\S]+" ios

//經過正則式pattern分割字符串
void splitString( string str, string pattern, vector<string>& vect)
{
  regex pattern( pattern );
  const std::sregex_token_iterator end;
  for (std::sregex_token_iterator i( str.begin(), str.end(), pattern); i != end ; ++i) {
      std::cout << *i << std::endl;
    vect.push_back( *i );
  }
} 正則表達式

int main()
{
  string str = " ! 1 s bodyright_unablation.grd";
  vector<string> v;
  splitString( str, PATTERN, v );
    for( int i = 0; i < v.size(); i ++ ){
           cout << v[i] << endl;
    }
 
  return 0;
}express

其中重要的知識點來自http://blog.sina.com.cn/s/blog_ac9fdc0b0101oow9.html spa

****************************************************************************************************
正則表達式語法
     正則表達式的特性分紅不少種類,下面的內容是perl類型的Regex。
============================================================================================
特殊含義的字符
.  :任意單個字符
[] :字符集
{} :計數
() :子模式
\  :下一個字符具備特殊含義
*  :0個或多個
+  :一個或多個
?  :0個或一個
|  :或
^  :行的開始;否認
$  :行的結束
===========================================================================================
字符集
\d :一個十進制數字
\l :一個小寫字母
\s :一個空白符(空格符,製表符等)
\u :一個大寫字母
\w :一個字母(a~z或A~Z)或數字(0~9)或下劃線(_)
\D :除了\d以外的字符
\L :除了\l以外的字符
\S :除了\s以外的字符
\U :除了\u以外的字符
\W :除了\w以外的字符
===========================================================================================
重複
{n}  :嚴格重複n次
{n,} :重複n次或更屢次
{n,m}:重複至少n次,至多m次
*    :{0,}
+    :{1,}
?    :{0,1}
===========================================================================================
子模式
    爲了指定模式中的子模式,用括號將其括起來
(\d*:)?(\d+):它表示字符串前半部分能夠爲空,若非空,則是任意長度的數字後接一個冒號,後半部分是一個或多個數字的序列。
===========================================================================================
可選項
    | 表示二選一的概念。
Subject:(FW:| Re:):表示匹配Subject:Fw:或者是Subject:Re:
===========================================================================================
正則表達式錯誤
    當咱們將一個模式富裕regex時,它會對模式進行檢查,若是發現模式不合法或過於複雜,沒法用於匹配時,它會拋出一個bad_expression異常。htm

相關文章
相關標籤/搜索