正規表示式就是用乙個「字串」來描述乙個特徵,然後去驗證另乙個「字串」是否符合這個特徵。簡單的乙個例子:用字串」a」來驗證字串s是否是」a」,形如s.match(「a」)。概括來說有以下作用:
字母、數字、漢字、下劃線、以及後續沒有特殊定義的標點符號,都是」普通字元」。表示式中的普通字元,在匹配乙個字串的時候,匹配與之相同的乙個字元。如:表示式 「a」,在匹配字串 「abcde」 時,匹配到的內容是:」a」。
一些不便書寫的字元,採用在前面加 「\」 的方法。常見的如:
此外,還有其他再正則中有特殊用處的標點符號,在前面加 「"後,代表該符號本身。如:^, $。如果要想匹配字串中 」^「 和 」$「 字元,需要寫成 」\^「 和 」\$「。如
其匹配規則和普通字串是一樣的,如」\^「匹配」a^bc」中的」^「。
如:表示式 「\dtest\d」匹配」1test2」。
除了正則自帶的』多種字元』匹配外,還可以通過中括號來自定義。
如:[123]匹配 「1」或」2」或」3」;[^abc]匹配 「a」、」b」、」c」 之外的任意乙個字元
這裡需要注意的是,在使用時,只有會改變字元組含義的才需要轉義,
其他情況即使是特殊字元也不需要轉義,如:
「次數修飾」放在」被修飾的正規表示式」後邊,可以匹配多次。如:
此外,還有一些符號可以影響表示式內部的子表示式之間的關係:
在使用修飾匹配次數的特殊符號時,有幾種表示方法可以使同乙個表示式能夠匹配不同的次數,比如:」「, 」「, 」?「, 」*「, 」+「,具體匹配的次數隨被匹配的字串而定。這種重複匹配不定次數的表示式在匹配過程中,總是盡可能多的匹配。比如,文字 「a***a***a」,」(a)(\w+)「,其中」\w+「會匹配」***a***a」,」(a)(\w+)(a)「則會匹配」***a***」。由此可見,」\w+「 在匹配的時候,總是盡可能多的匹配符合它規則的字元。雖然第二個舉例中,它沒有匹配最後乙個 「a」,但那也是為了讓整個表示式能夠匹配成功。同樣的,帶 」*「 和 」「 的表示式都是盡可能地多匹配,帶 」?「 的表示式在可匹配可不匹配的時候,也是盡可能的匹配。這種匹配原則就叫作」貪婪」模式。
非貪婪模式則是指的在修飾匹配次數的特殊符號後再加上乙個 「?」 號,可以使匹配次數不定的表示式盡可能少的匹配,使可匹配可不匹配的表示式,盡可能的不匹配。這種匹配原則也叫作 「勉強」 模式。如果少匹配就會導致整個表示式匹配失敗的時候,與貪婪模式類似,非貪婪模式會最小限度的再匹配一些,以使整個表示式匹配成功。如,文字 「a***a***a」 ,」(a)(\w+?)「,其中」\w+「只會匹配乙個」x」。
表示式在匹配時,表示式引擎會將小括號 「()」 包含的表示式所匹配到的字串記錄下來。在獲取匹配結果的時候,小括號包含的表示式所匹配到的字串可以單獨獲取。當用某種邊界來查詢,而所要獲取的內容又不包含邊界時,必須使用小括號來指定所要的範圍。如:」(.*?)
「即獲取div標籤內部的內容。
這裡小括號包含的正規表示式所匹配到的字串不僅僅是在匹配結束後才可以使用,在匹配過程中也可以使用。表示式後邊的部分,可以引用前面括號內的子匹配已經匹配到的字串。引用方法是 「\」 加上乙個數字。」\1」 引用第1對括號內匹配到的字串,」\2」 引用第2對括號內匹配到的字串,以此類推,而如果一對括號內包含另一對括號,則外層的括號先排序號。換句話說,哪一對的左括號 「(」 在前,那這一對就先排序號。
例如:表示式 「(『|」)(.*?)(\1)「 在匹配 」 『hello』, 「world」 「 時,匹配結果是:成功;匹配到的內容是:」 『hello』 「。再次匹配下乙個時,可以匹配到 」 「world」 「。
如前面所講」^「、」$「、」\b」字元有乙個共同點,就是:它們本身不匹配任何字元,只是對 「字串的兩頭」 或者 「字元之間的縫隙」 附加了乙個條件。同樣的,正則中提供了其他基於此原理的機制,來實現預搜尋。
在表示式 「\s」,」\d」,」\w」,」\b」 表示特殊意義的同時,對應的大寫字母表示相反的意義
括號」()「內的子表示式,如果希望匹配結果不進行記錄供以後使用,可以使用 」(?:***xx)「格式。如:表示式 」(?:(\w)\1)+「 匹配 「a bbccdd efg」 時,結果是 「bbccdd」。括號 」(?:)「 範圍的匹配結果不進行記錄,因此 」(\w)「 使用 」\1」 來引用。
常用的表示式屬性設定包括:ignorecase、singleline、multiline、global
正規表示式 正規表示式 總結
非負整數 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正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...