揭開正規表示式的神秘面紗

2022-03-29 03:37:36 字數 2161 閱讀 8366

引言

正規表示式(regular expression)就是用乙個「字串」來描述乙個特徵,然後去驗證另乙個「字串」是否符合這個特徵。比如 表示式「ab+」 描述的特徵是「乙個 'a' 和 任意個 'b' 」,那麼 'ab', 'abb', 'abbbbbbbbbb' 都符合這個特徵。

正規表示式可以用來:(1)驗證字串是否符合指定特徵,比如驗證是否是合法的郵件位址。(2)用來查詢字串,從乙個長的文字中查詢符合指定特徵的字串,比查詢固定字串更加靈活方便。(3)用來替換,比普通的替換更強大。

正規表示式學習起來其實是很簡單的,不多的幾個較為抽象的概念也很容易理解。之所以很多人感覺正規表示式比較複雜,一方面是因為大多數的文件沒有做到由淺入深地講解,概念上沒有注意先後順序,給讀者的理解帶來困難;另一方面,各種引擎自帶的文件一般都要介紹它特有的功能,然而這部分特有的功能並不是我們首先要理解的。

文章中的每乙個舉例,都可以點選進入到測試頁面進行測試。閒話少說,開始。

1. 正規表示式規則

1.1 普通字元

舉例2:表示式 "bcd",在匹配字串 "abcde" 時,匹配結果是:成功;匹配到的內容是:"bcd";匹配到的位置是:開始於1,結束於4。

1.2 簡單的轉義字元

一些不便書寫的字元,採用在前面加 "\" 的方法。這些字元其實我們都已經熟知了。

還有其他一些在後邊章節中有特殊用處的標點符號,在前面加 "\" 後,就代表該符號本身。比如:^, $ 都有特殊意義,如果要想匹配字串中 "^" 和 "$" 字元,則表示式就需要寫成 "\^" 和 "\$"。

舉例1:表示式 "\$d",在匹配字串 "abc$de" 時

,匹配結果是:成功;匹配到的內容是:"$d";匹配到的位置是:開始於3,結束於5。

1.3 能夠與 '多種字元' 匹配的表示式

正規表示式中的一些表示方法,可以匹配 '多種字元' 其中的任意乙個字元。比如,表示式 "\d" 可以匹配任意乙個數字。雖然可以匹配其中任意字元,但是只能是乙個,不是多個。這就好比玩撲克牌時候,大小王可以代替任意一張牌,但是只能代替一張牌。

舉例1:表示式 "\d

\d",在匹配 "abc123" 時

,匹配的結果是:成功;匹配到的內容是:"12";匹配到的位置是:開始於3,結束於5。

舉例2:表示式 "a.

\d",在匹配 "aaa100" 時

,匹配的結果是:成功;匹配到的內容是:"aa1";匹配到的位置是:開始於1,結束於4。

1.4 自定義能夠匹配 '多種字元' 的表示式

使用方括號 [ ] 包含一系列字元,能夠匹配其中任意乙個字元。用 [^ ] 包含一系列字元,則能夠匹配其中字元之外的任意乙個字元。同樣的道理,雖然可以匹配其中任意乙個,但是只能是乙個,不是多個。

舉例1:表示式 "[bcd]

[bcd]

" 匹配 "abc123" 時

,匹配的結果是:成功;匹配到的內容是:"bc";匹配到的位置是:開始於1,結束於3。

舉例2:表示式 "[^abc]

" 匹配 "abc123" 時

,匹配的結果是:成功;匹配到的內容是:"1";匹配到的位置是:開始於3,結束於4。

1.5 修飾匹配次數的特殊符號

前面章節中講到的表示式,無論是只能匹配一種字元的表示式,還是可以匹配多種字元其中任意乙個的表示式,都只能匹配一次。如果使用表示式再加上修飾匹配次數的特殊符號,那麼不用重複書寫表示式就可以重複匹配。

使用方法是:"次數修飾"放在"被修飾的表示式"後邊。比如:"[bcd][bcd]" 可以寫成 "[bcd]"。

揭開MVC的神秘面紗

最近參加的高校平台專案中涉及到了 mvc。mvc,有人說是一種設計模式,也有人說是使用者介面層設計架構。那麼 mvc到底是什麼呢?今天我們一起來學習一下。mvc,即model view controller,把乙個應用的輸入 處理 輸出流程按照 model view controller 的方式進行...

揭開 const 的神秘面紗

const 變數 int main int a 10 可讀可寫 int b b a a的讀取許可權 b a 20 a的寫許可權 左值 放在賦值符號的左邊 1.const 定義常變數,將變數變成唯讀型的 int ca 10 可讀可寫 const int ca 10 加上const後,變成了唯讀型 ca...

揭開Mashup神秘的面紗

今天做繫分考試題時,遇到了乙個web應用的問題。mashup目前經常使用的mashup資料介面有那些啊?還有,在應用mashup時,進行內容聚合的物理位置很重要,目前很多mashup站點都選擇在客戶端機器上進行內容聚合,構成所謂的胖網際網路應用程式 ria 請問在客戶端進行內容聚合有什麼優點啊?ps...