C 正規表示式常用規則及三大演算法二

2021-08-21 23:51:51 字數 2242 閱讀 9320

首先,正規表示式我只會三大主要演算法,其他的我可能沒有了解到,畢竟還沒有實戰經驗。

1.第一演算法——匹配演算法(  使用函式regex e()與regex_match()   )

***第一種      (至於匹配結果,我就只用ip位址來驗證)

#include#includeusing namespace std;

//新增標頭檔案

#include //寫乙個匹配函式

bool isemail(string str)

"); //表示4-10個字元 指定個數

//regex e("ada(e|b)"); //表示或者

//regex e("^[a-z]"); //屬於a-a [^a-z] 不屬於a-z

//regex e("[a-za-z][a-za-z0-9_]");

bool b = regex_match(str, e);

return b;

}int main()

else cout << "this is not an email" << endl;

return 0;

}

如圖第乙個大概ip位址匹配可知,為四段數字組成,前三段可以是多個數字,而最後一段只能為乙個

故結果如下

***第二種

int main()

else

}

如圖可知表示乙個或多個字母或者數字

結果我就不寫了,為了文章簡單一點。

2. 第二演算法——搜尋演算法( 使用函式regex e() 與 regex_search()  )

#includeusing namespace std;

#include int main();

regex e("\\b(o)[^ ?.]+"); // ^ 在字符集裡面表示的是乙個否定

smatch m; //存放string 型別的結果 string型別的迭代器

while (regex_search(str, m, e))

return 0;

}

所以,結果如下

**********************在這裡有乙個比較有意思的東西 smatch, 那麼這個smatch表示什麼呢?**中也說了,smatch是乙個迭代器,它是c++11中新加入的正規表示式的支援,由sub_match模板類得來。(如果用vs的夥伴,可以除錯,轉義看看) 使用smatch可以例項出乙個物件,來儲存被表示式所匹配到了的字串。

3.第三大演算法——替換演算法(使用regex e() 與regex_replace以及檔案操作函式)

#include#include#include#includeusing namespace std;

int main();

file.read(sztemp, sizeof(char)*a);

str += sztemp;

//關閉檔案

file.close();

regex e("\\b(sf)[^ .?]*"); //此處為定義需要被替換的字串

string s;

//此處family為替換之後的字串

regex_replace(back_inserter(s), str.begin(), str.end(), e , "family");

cout << s << endl;

//開啟檔案 以寫的二進位制格式

fstream file1("swap.txt", ios::out | ios::binary);

file1.write(s.c_str(), s.size());

file1.close();

return 0;

}

如下圖,上面是修改後,下方是修改前的

ps: 檔案操作就不說了(調皮) ,加油!

正規表示式 常用正規表示式

一 校驗數字的表示式 1 數字 0 9 2 n位的數字 d 3 至少n位的數字 d 4 m n位的數字 d 5 零和非零開頭的數字 0 1 9 0 9 6 非零開頭的最多帶兩位小數的數字 1 9 0 9 0 9 7 帶1 2位小數的正數或負數 d d 8 正數 負數 和小數 d d 9 有兩位小數的...

正規表示式 常用正規表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 4 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 或者 1 3...

正規表示式常用

正規表示式的介紹 1 資料型別 基本資料型別 number string boolean null undefined 複雜資料型別 array function object math date regexp正規表示式 string number boolean 2 regular express...