正規表示式語言由兩種基本字元型別組成:原義(正常)文字字元和元字元。元字元使正規表示式具有處理能力。所謂元字元就是指那些在正規表示式中具有特殊意義的專用字元,可以用來規定其前導字元(即位於元字元前面的字元)在目標物件中的出現模式。
常用的元字元**說明:
.如果你想查詢元字元本身的話,比如你查詢.,或者*,就出現了問題:你沒辦法指定它們,因為它們會被解釋成別的意思。這時你就得使用來取消這些字元的特殊意義。因此,你應該使用.和*。當然,要查詢本身,你也得用.匹配除換行符以外的任意字元
w 匹配字母或數字或下劃線或漢字
s 匹配任意的空白符
d 匹配數字
b 匹配單詞的開始或結束
^ 匹配字串的開始
$ 匹配字串的結束
例如:deerchao.cn匹配你已經看過了前面的*,+,,這幾個匹配重複的方式了。下面是正規表示式中所有的限定符(指定數量的**,例如*,等):匹配c:windows。
**/語法說明:
*我們已經提到了怎麼重複單個字元(直接在字元後面加上限定符就行了);但如果想要重複多個字元又該怎麼辦?你可以用小括號來指定子表示式(也叫做分組),然後你就可以指定這個子表示式的重複次數了,你也可以對子表示式進行其它一些操作(後面會有介紹)。重複零次或更多次
+ 重複一次或更多次
? 重複零次或一次
重複n次
重複n次或更多次
重複n到m次
(d.)d是乙個簡單的ip位址匹配表示式。要理解這個表示式,請按下列順序分析它:d匹配1到3位的數字,(d.)匹配三位數字加上乙個英文句號(這個整體也就是這個分組)重複3次,最後再加上乙個一到三位的數字(d)。
反義
]+>匹配用尖括號括起來的以a開頭的字串。
**/語法說明
w後向引用用於重複搜尋前面某個分組匹配的文字。例如,1代表分組1匹配的文字。難以理解?請看示例:匹配任意不是字母,數字,下劃線,漢字的字元
s 匹配任意不是空白符的字元
d 匹配任意非數字的字元
b 匹配不是單詞開頭或結束的位置
[^x]
匹配除了x以外的任意字元
[^aeiou]
匹配除了aeiou這幾個字母以外的任意字元
b(w+)bs+1b可以用來匹配重複的單詞,像go go, 或者kitty kitty。這個表示式首先是乙個單詞,也就是單詞開始處和結束處之間的多於乙個的字母或數字(b(w+)b),這個單詞會**獲到編號為1的分組中,然後是1個或幾個空白符(s+),最後是分組1中捕獲的內容(也就是前面匹配的那個單詞)(1)。
表4.常用分組語法
分類**/語法說明
捕獲(exp)接下來的四個用於查詢在某些內容(但並不包括這些內容)之前或之後的東西,也就是說它們像b,^,$那樣用於指定乙個位置,這個位置應該滿足一定的條件(即斷言),因此它們也被稱為零寬斷言。最好還是拿例子來說明吧:匹配exp,並捕獲文字到自動命名的組裡
(?exp)
匹配exp,並捕獲文字到名稱為name的組裡,也可以寫成(?'name'exp)
(?:exp)
匹配exp,不捕獲匹配的文字,也不給此分組分配組號零寬斷言
(?=exp)
匹配exp前面的位置
(?<=exp)
匹配exp後面的位置
(?!exp)
匹配後面跟的不是exp的位置
(?匹配前面不是exp的位置注釋
(?#comment)
這種型別分組不對正規表示式的處理產生任何影響,用於提供注釋讓人閱讀
(?=exp)也叫零寬度正**先行斷言,它斷言自身出現的位置的後面能匹配表示式exp。比如bw+(?=ingb),匹配以ing結尾的單詞的前面部分(除了ing以外的部分),如查詢i'm singing while you're dancing.時,它會匹配sing和danc。
(?<=exp)也叫零寬度正回顧後發斷言,它斷言自身出現的位置的前面能匹配表示式exp。比如(?<=bre)w+b會匹配以re開頭的單詞的後半部分(除了re以外的部分),例如在查詢reading a book時,它匹配ading。
詳細內容來自:
正規表示式30分鐘入門教程deerchao.cn
正規表示式 匹配
字串 void abtr quint32 ab 表示乙個正規表示式 template class bidirectionaliterator class allocator std allocator sub match bidirectionaliterator class match resul...
正規表示式匹配
請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 解法 首先要想到用遞迴處理...
正規表示式匹配
請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 class solutio...