正規表示式

2021-09-21 14:17:06 字數 3108 閱讀 6437

正規表示式,又稱為規則表示式,英文名為regular expression,在**中常簡寫為regex、regexp或re,常被用來檢索、替換那些符合某個模式(規則)的文字,通俗地來說正規表示式是用於進行文字匹配的工具,本文主要講正規表示式裡的一些基礎,還有比較常見的字元、方法。

我們來看一下它的頁面(如下圖),正則裡基礎語法規則大體一致,但每門語言具體來說又有點差別,這裡我們使用的是c#,本文主要講字串的匹配還有替換。

如果說我們想要找到的只是單個字母a,而不是帶字母a的單詞,那該如何操作呢?這時我們就要用到正規表示式規定的乙個特殊**\b,我們也把它叫做元字元,匹配單詞的開始或結束位置,而且\b是只匹配乙個位置的,那麼我們使用它就可以準確地匹配出字母a(如下圖),

除了\b這個元字元外,還有其它的元字元,下面我們來看一下,

如 .這個是英文狀態下的句號,比較小(一開始學習的時候我都沒看到有這個點還以為是空格),千萬不要忽略它哦!.它是匹配除換行符以外的任意字元的(如下圖):

\w,它是匹配數字或字母或下劃線或漢字(如下圖):

\s,它是匹配任意的空白符,比如空格或換行符(如下圖):

還有其它的元字元請看下邊的**,就不一一舉例了(如下**)。

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

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

\s匹配任意的空白符

\d匹配數字等價於[0-9] [匹配指定範圍]

\b匹配單詞的開始或結束

匹配字串的開始

匹配字串的結束

除了元字元還有反義字元和限定符,反義字元呢它的字元含義與元字元的恰好相反,那什麼時候能用到反義字元呢,在你有時需要查詢不屬於某個能簡單定義的字元,就比如想查詢除了數字以外的任意字元,這時需要用到反義字元了(如下**),

反義字元

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

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

\d匹配任意非數字的字元

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

[^x]

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

限定符呢就是限定匹配內容出現的次數,就是重複出現多少次(如下**)。

常用限定符

重複零次或更多次

重複一次或更多次

重複零次或一次

重複n次

重複n次或更多次

重複n到m次

比如說現在匹配乙個11位數**號碼(如下圖),以13開頭匹配13後面的9位數字,也就是匹配13後面出現的9個數字,表示的是匹配的次數,就是匹配9次,加上前面匹配13加匹配數字9次就成功匹配出了這個**號碼。

那麼講完限定符之後接下來講的是正規表示式裡面的替換。正規表示式裡的替換指的是有幾種規則,如果滿足其中任意一種規則都應該當成匹配,具體方法是用|把不同的規則分隔開.

替換可以使用多種匹配規則,接下來使用這個方法匹配三種不同格式的**號碼(如下圖)

以上是使用了三個不同的規則匹配三個不同格式的**號碼,說明了替換可以使用多個規則來匹配。

特別強調,在使用替換時順序是很重要的,因為在匹配替換時,是從左到右地測試每個分枝的條件,如果滿足了某個分枝的條件,就不會去管其它的替換條件了。

接下來要講的是分組語法裡面的零斷寬言(如下**)。

零斷寬言

(?=exp)

匹配exp前面的位置

(?<=exp)

匹配exp後面的位置

(?!exp)

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

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

這裡我們挑其中兩個方法來講乙個例子,

例子:是匹配exp前面的位置,也叫零寬度正**先行斷言,它斷言自身出現的位置的後面能匹配表示式exp,也就是匹配exp前面的資料,這裡使用(?=exp)來匹配的是例子中的src前面的資料,(如下圖)。

這樣我們就匹配到了src前面的內容,既然能匹配前面的同樣後面的也能匹配,(?<=exp)就是匹配exp後面的位置,(?<=exp)也叫零寬度正回顧後發斷言,它斷言自身出現的位置的前面能匹配表示式exp,接著使用這個來匹配src後面的資料(如下圖)

還有貪婪匹配與懶惰匹配,聽到這個名稱是不是很新奇(反正我剛學習的時候就覺得)。什麼是貪婪匹配呢?就是當正規表示式中包含能接受重複的限定符時,就是在使整個表示式能得到匹配的前提下,匹配盡可能多的字元,這被稱為貪婪匹配。懶惰匹配呢就和貪婪匹配相反,它是匹配盡可能少的字元,懶惰限定符就是在限定符的後面加上個問號?(如下**)

懶惰限定符

重複零次或更多次,但盡可能少重複

重複一次或更多次,但盡可能少重複

重複零次或一次,但盡可能少重複

?重複n次,但盡可能少重複

?重複n次或更多次,但盡可能少重複

?重複n到m次,但盡可能少重複

相對於貪婪匹配,懶惰匹配使用得多一點,下面就舉乙個懶惰匹配的例子(如下圖),用懶惰限定符在字串裡獲取具體日期資料

關於正規表示式的基礎學習就暫時分享到這裡,這些都是比較基礎,常用的一些正則,希望能對你有所幫助。

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

非負整數 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正規表示式 編寫正規表示式

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