匹配注釋的正則標的是 正規表示式

2021-10-13 19:44:19 字數 2436 閱讀 4042

正規表示式語言由兩種基本字元型別組成:原義(正常)文字字元元字元元字元使正規表示式具有處理能力。所謂元字元就是指那些在正規表示式中具有特殊意義的專用字元,可以用來規定其前導字元(即位於元字元前面的字元)在目標物件中的出現模式

常用的元字元**說明:

.

匹配除換行符以外的任意字元

w 匹配字母或數字或下劃線或漢字

s 匹配任意的空白符

d 匹配數字

b 匹配單詞的開始或結束

^ 匹配字串的開始

$ 匹配字串的結束

如果你想查詢元字元本身的話,比如你查詢.,或者*,就出現了問題:你沒辦法指定它們,因為它們會被解釋成別的意思。這時你就得使用來取消這些字元的特殊意義。因此,你應該使用.和*。當然,要查詢本身,你也得用.

例如:deerchao.cn匹配

匹配c:windows。

你已經看過了前面的*,+,,這幾個匹配重複的方式了。下面是正規表示式中所有的限定符(指定數量的**,例如*,等):

**/語法說明:

*

重複零次或更多次

+ 重複一次或更多次

? 重複零次或一次

重複n次

重複n次或更多次

重複n到m次

我們已經提到了怎麼重複單個字元(直接在字元後面加上限定符就行了);但如果想要重複多個字元又該怎麼辦?你可以用小括號來指定子表示式(也叫做分組),然後你就可以指定這個子表示式的重複次數了,你也可以對子表示式進行其它一些操作(後面會有介紹)。

(d.)d是乙個簡單的ip位址匹配表示式。要理解這個表示式,請按下列順序分析它:d匹配1到3位的數字,(d.)匹配三位數字加上乙個英文句號(這個整體也就是這個分組)重複3次,最後再加上乙個一到三位的數字(d)。

反義

]+>匹配用尖括號括起來的以a開頭的字串。

**/語法說明

w

匹配任意不是字母,數字,下劃線,漢字的字元

s 匹配任意不是空白符的字元

d 匹配任意非數字的字元

b 匹配不是單詞開頭或結束的位置

[^x]

匹配除了x以外的任意字元

[^aeiou]

匹配除了aeiou這幾個字母以外的任意字元

後向引用用於重複搜尋前面某個分組匹配的文字。例如,1代表分組1匹配的文字。難以理解?請看示例:

b(w+)bs+1b可以用來匹配重複的單詞,像go go, 或者kitty kitty。這個表示式首先是乙個單詞,也就是單詞開始處和結束處之間的多於乙個的字母或數字(b(w+)b)這個單詞會**獲到編號為1的分組中,然後是1個或幾個空白符(s+),最後是分組1中捕獲的內容(也就是前面匹配的那個單詞)(1)

表4.常用分組語法

分類**/語法說明

捕獲(exp)

匹配exp,並捕獲文字到自動命名的組裡

(?exp)

匹配exp,並捕獲文字到名稱為name的組裡,也可以寫成(?'name'exp)

(?:exp)

匹配exp,不捕獲匹配的文字,也不給此分組分配組號零寬斷言

(?=exp)

匹配exp前面的位置

(?<=exp)

匹配exp後面的位置

(?!exp)

匹配後面跟的不是exp的位置

(?匹配前面不是exp的位置注釋

(?#comment)

這種型別分組不對正規表示式的處理產生任何影響,用於提供注釋讓人閱讀

接下來的四個用於查詢在某些內容(但並不包括這些內容)之前或之後的東西,也就是說它們像b,^,$那樣用於指定乙個位置,這個位置應該滿足一定的條件(即斷言),因此它們也被稱為零寬斷言。最好還是拿例子來說明吧:

(?=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...