Qt:正則表達式語法:


     正則表達式是驗證輸入、從輸入中提取數據以及對輸入進行搜索和替換的強大工具,所謂正則表達式,regexp是一種利用模式匹配語言來描述字符串組成限制條件的方式;
       Qt 提供了一個QRegExp類,它實現了Perl風格的擴展正則表達式語言的大部分功能:
    正則表達式是一個字符的序列;
1):特殊字符
  •    . (匹配任何字符)
  •   \n (匹配換行符)
  •   \f (匹配換頁符)
  •   \xhhhh(匹配一個unicode字符,其對應的碼值是范圍0x0000到0xFFFF之間的一個十六進制數hhhh)
2)量詞:
  •    + (出現1此或者更多次)
  •    ?(出現0次 或者 1 次)
  •    * (出現0次 或者 更多次) 
  •    {i,j} (出現至少i次 但是不超過j次)
3)字符集  ---- 在 匹配表達式指定位置允許出現的 字符集合,其中還預定義了幾個字符集合:
  •    \s (匹配任何 空白字符)
  •    \S (匹配任何 非空白字符)
  •    \d (匹配任何 數字字符: 從‘0’ 到 ‘9’ )
  •    \D (匹配任何 非數字字符)
  •    \w (匹配任何"單詞"字符,也就是任意的字母、數字或者下划線)
  •    \W (匹配任意的非單詞字符)
字符集也可以使用方括號指定:
  • [ABCES] (匹配這五個字符中的任意一個)
  • [a-g]   (匹配a-g中任意一個字符)
  • [^xyz]  (匹配任何除這三個字符以外的字符)
4)分組 和捕獲字符 --- () 可以用來把字符划分成組的特殊字符,字符組可以 是向后引用的。也就是說,如果 存在一個匹配,那么分組了的值可以通過各種方式捕獲和訪問;
   一般一個正則表達式最多可以引用9個分組,即\1到\9這樣的修飾;
 此外還有一個QRegExp成員函數cap(int nth),它返回第n個分組(基於QString的形式返回).
 
5)錨點字符 --- 確定嘗試進行匹配操作的邊界
  •   脫字符(^)   如果是正則表達式中的第一個字符,則說明匹配過程從字符串的開頭處開始,
  •   美元符($)  如果是正則表達式中最后一個字符,則表明匹配過程直到字符串的結尾才會結束;
  •   單詞邊界 \b      非單詞邊界\B
 
 
 
 
例子:
c*at    c出現零次或者多次,at緊跟其后;例如 at,cat,ccat等;
c?at    c出現零次或者1次,之后緊跟着at:僅at或者 at;
c.t     c之后緊跟任意字符,其后面又緊跟t的字符匹配,例如cat,cot等等;
c.*t    字符c后邊緊跟0個或者多個任意字符,然后緊跟t,例如 ct,caaatt, casdasdt等等
ca+t    '+'意味着前面的字符可以出現一次或者多次,因此符合條件的有cat,caat,caaat等等
c\.\*t  反斜線在特殊字符之前將會"使其轉義",因此,只有字符串"c.*t"才能匹配;;
c\\\.t  只和字符串"\c.t"匹配;
c[0-9a-c]+z  c 與 z 之間可以出現[]中的任意字符,+ 表示出現1+ 最少1次
the (cat | dog) ate (fish|mouse) (輪流交替)匹配的結果是 四次;; 不斷變換 the cat ate fish ;
                   the dog ate mouse; --------
\w+        字母數字(單詞字符)的序列,與【a-zA-Z0-9】+等價
\W         非單詞字符(標點符號/空白符號等)
\s{5}      正好5個空白字符(制表符,空白符或者換行符)
^\s+       匹配字符串開頭處的一個或者多個空白字符
\s+$       匹配字符串結尾處的一個或者多個空白字符
^Help      如果Help出現在字符串的開頭,就匹配它;
[^Help]    與字符串中任意地方(和元字符^的意思不一樣)的除單詞Help中任一字母之外的任何單個字符相匹配
\S{1,5}    至少1個、至多5個非空白字符(可打印的字符)
\d         一個數字[0-9](\D是一個非數字,也就是[^-0-9])
\d{3}-\d{4}7位電話號碼: 3位-四位
\bm{A-Z}\w+ \b代表單詞邊界:mBuffer匹配而StreamBuffer不匹配;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM