正規表示式

2021-08-20 13:20:12 字數 2186 閱讀 7687

正規表示式(regluar expressions)又稱規則表示式,這個概念最初是由unix中的工具軟體(如sed 和 grep)普及開的。正規表示式在**中常簡寫為res,regexes或regexp(regex patterns)。它本質上是乙個小巧的、高度專用的程式語言。許多程式語言都支援通過正規表示式進行字串操作。例如,在perl中就內建了乙個功能強大的正規表示式引擎。

正規表示式的主要應用物件是文字,使用正規表示式可以指定想要匹配的字串規則,然後通過這個規則來匹配、查詢、替換或切割那些符合指定規則的文字。總體來講,正規表示式可以對指定的文字實現以下功能:

正規表示式的主要應用物件是文字,其最基礎的功能是文字匹配,而文字是由乙個個的字元組成,因此正規表示式實際上是對字元的匹配。正規表示式中的字元分為普通字元元字元,而正規表示式就是這些普通字元和特殊元字元組合成的表示乙個特定匹配規則的表示式。

實際上,大多數字元都將簡單地匹配它們的自身值,它們被稱為普通字元,如數字(0-9),字母(a-z, a-z)等。例如,正規表示式hello123將匹配字串'hello123',因為該這則表示式中都是普通字元,不包含特殊元字元。當然,我們可以通過指定正規表示式的匹配模式為 忽略字母大小寫模式,這麼正規表示式hello123將能夠匹配'hello123', 'hello123', 'hello123'等字串。

其實我們並不需要去記憶哪些字元是普通字元,我們只需要知道哪些字元是特殊元字元就可以了,除了特殊元字元之外的所有字元都是普通字元。

上面提到,正規表示式除了進行字元自身之的匹配外,還可以基於指定的規則進行模糊匹配。這就意味著它需要一些特殊字元來表示這些模糊的匹配規則,因此這些特殊字元預設情況下並不能匹配到它們自身的字面值,而是表示某些特殊的功能。這些特殊元字元包括:., [, ], (, ), *, +, ?, ^, $, \, |。這些特殊字元的使用,會在下面進行詳細講解。正規表示式的重點和難點也就在於對正規表示式引擎的工作原理以及對這些特殊元字元掌握和靈活運用。

那麼如果想匹配這些特殊元字元本身的字面值怎麼辦呢?我們可以通過其中乙個特殊字元對其它特殊字元進行轉義,從而達到可以匹配這些特殊字元自身字面值的目的。

現在我們來詳細說明一下正規表示式中的特殊元字元到底能完成哪些複雜的匹配功能。

說明:所有的特殊字元在[ ]內都將失去其原有的特殊含義:

我們可以在反斜槓後面跟上乙個指定的字母來表示預定義的字元集合

在正規表示式中,我們還可以指定匹配某個字元出現次數

說明:中的m和n可以省略其中乙個,相當於,相當於。

我們可以得出以下結論:

我們優先選擇使用 ?, + 和 *,因為他們書寫簡單,也可以使整個正規表示式變得簡潔。

說明:? 這個字元在正則表達中與 ?, +, *, 連用時還有乙個額外的功能,就是將匹配模式由貪婪模式(盡可能的增加匹配次數) 變成 非貪婪模式(盡可能減少匹配次數), 這個會在下面的內容中進行詳細說明。

正規表示式中還可以對邊界位置進行匹配,如乙個字串的開頭或結尾,乙個單詞的開頭或結尾。

語法 | 說明 | 表示式例項 | 可匹配到的字串例項

說明:上面所說的「不消耗字串內容」是指只是進行匹配,但是不移動原始字串的匹配位置,這樣就可以完成多次匹配。下面有個匹配密碼的正規表示式例項,就是用這個特性巧妙完成的。

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

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

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