正 則表示式

2021-08-27 01:43:22 字數 1001 閱讀 5933

#include #include #include int main() ; char r[15] = ; sscanf(p,"%[^\"]%*c%s",r,q); printf("%s\n", r); printf("%s\n", q); return 0; } 1/1507586.html 出處: 221704.aspx

感謝原文作者分享。

在看這篇文章之前建議你先了解一下什麼是正規表示式,具體不重複了,google一下能出一大堆,不過這篇文章比較好,貼個url iaocheng-se.htm,作者說30分鐘能看完的不是地球人,但是我15分鐘就看完了還記住了90%以上,好吧我來自火星,玩笑到此結束,下面切入正題。

本文的命題源自於這樣的乙個url,protocol://ip:port/chn/mode,比如說,dv:如果我要解析出來各個部分,並把它們儲存到各自的變數裡面要怎麼做?傳統的c程式設計師會說用strtok慢慢取得各個部分,對於要轉成int的用atoi,部分c++程式設計師也許會放棄strtok轉用std::string當中的find系列成員函式(find/find_first_of...)。是的,我以前也是這麼幹的,兩種方法都用過,當然也包括mfc裡的cstring的相關成員函式。現在,一種全新的方法源自於sscanf這個c語言函式。

無論你用c還是c++,sscanf和scanf這兩個函式都不會太陌生,%d %s %f甚至%02d %.2f這些東西你也很熟,看了上面我說的正規表示式,也許你會寫出這麼乙個正規表示式:[a-za-z]+://(\d\.)(\d):\d/\d /\d,沒錯,這個正規表示式的ip部分有點問題,但是為了描述簡單,暫時就這麼用了。激動人心的時候到了,我要告訴你的是scanf以及sscanf實際上是支援部分正規表示式的,當然即使是到現在我依舊不敢肯定這個部分是否是ansi的一部分,但是我的vs2005上沒有問題,朋友的vs2003上也沒有問題,至於vc6實在太古老暫時找不到測試。但是順便說一句,vs2005上你用sscanf或者scanf他會出警告的,他說這兩個函式不安全建議你用sscanf_s和scanf_s,我試了下推薦的兩個函式又不支援這個功能了,比較

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 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 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...