正規表示式是什麼東東?
在編寫處理字串的程式或網頁時,經常會有查詢符合某些複雜規則的字串的需要。正規表示式就是用於描述這些規則的工具。換句話說,正規表示式就是記錄文字規則的**。
很可能你使用過windows/dos下用於檔案查詢的萬用字元(wildcard),也就是*和?。如果你想查詢某個目錄下的所有的word文件的話,你會搜尋*.doc。在這裡,*會被解釋成任意的字串。和萬用字元類似,正規表示式也是用來進行文字匹配的工具,只不過比起萬用字元,它能更精確地描述你的需求——當然,代價就是更複雜——比如你可以編寫乙個正規表示式,用來查詢所有以0開頭,後面跟著2-3個數字,然後是乙個連字型大小「-」,最後是7或8位數字的字串(像010-12345678或0376-7654321)。
文字格式約定:專業術語 元字元/語法格式 正規表示式 正規表示式中的一部分(用於分析) 對其進行匹配的源字串 對正規表示式或其中一部分的說明。
字元是計算機軟體處理文字時最基本的單位,可能是字母,數字,標點符號,空格,換行符,漢字等等。字串是0個或更多個字元的序列。文字也就是文字,字串。說某個字串匹配某個正規表示式,通常是指這個字串裡有一部分(或幾部分分別)能滿足表示式給出的條件。
學習正規表示式的最好方法是從例子開始,理解例子之後再自己對例子進行修改,實驗。下面給出了不少簡單的例子,並對它們作了詳細的說明。
假設你在一篇英文**裡查詢hi,你可以使用正規表示式hi。
這幾乎是最簡單的正規表示式了,它可以精確匹配這樣的字串:由兩個字元組成,前乙個字元是h,後乙個是i。通常,處理正規表示式的工具會提供乙個忽略大小寫的選項,如果選中了這個選項,它可以匹配hi,hi,hi,hi這四種情況中的任意一種。
不幸的是,很多單詞裡包含hi這兩個連續的字元,比如him,history,high等等。用hi來查詢的話,這裡邊的hi也會被找出來。如果要精確地查詢hi這個單詞的話,我們應該使用\bhi\b。
\b是正規表示式規定的乙個特殊**(好吧,某些人叫它元字元,metacharacter),代表著單詞的開頭或結尾,也就是單詞的分界處。雖然通常英文的單詞是由空格,標點符號或者換行來分隔的,但是\b並不匹配這些單詞分隔字元中的任何乙個,它只匹配乙個位置。
假如你要找的是hi後面不遠處跟著乙個lucy,你應該用\bhi\b.*\blucy\b。
這裡,.是另乙個元字元,匹配除了換行符以外的任意字元。*同樣是元字元,不過它代表的不是字元,也不是位置,而是數量——它指定*前邊的內容可以連續重複使用任意次以使整個表示式得到匹配。因此,.*連在一起就意味著任意數量的不包含換行的字元。現在\bhi\b.*\blucy\b的意思就很明顯了:先是乙個單詞hi,然後是任意個任意字元(但不能是換行),最後是lucy這個單詞。
如果需要更精確的說法,\b匹配這樣的位置:它的前乙個字元和後乙個字元不全是(乙個是,乙個不是或不存在)\w。
如果同時使用其它元字元,我們就能構造出功能更強大的正規表示式。比如下面這個例子:
0\d\d-\d\d\d\d\d\d\d\d匹配這樣的字串:以0開頭,然後是兩個數字,然後是乙個連字型大小「-」,最後是8個數字(也就是中國的**號碼。當然,這個例子只能匹配區號為3位的情形)。
這裡的\d是個新的元字元,匹配一位數字(0,或1,或2,或……)。-不是元字元,只匹配它本身——連字元(或者減號,或者中橫線,或者隨你怎麼稱呼它)。
換行符就是'\n',ascii編碼為10(十六進製制0x0a)的字元。
為了避免那麼多煩人的重複,我們也可以這樣寫這個表示式:0\d-\d。這裡\d後面的()的意思是前面\d必須連續重複匹配2次(8次)。
ok,到此為止,相信你已經對正規表示式有了乙個初步認識,後續文章將會帶你更深層次的去理解正規表示式的用法~~~
正規表示式學習筆記之一 簡單認識正規表示式
正規表示式是什麼東東?在編寫處理字串的程式或網頁時,經常會有查詢符合某些複雜規則的字串的需要。正規表示式就是用於描述這些規則的工具。換句話說,正規表示式就是記錄文字規則的 很可能你使用過windows dos下用於檔案查詢的萬用字元 wildcard 也就是 和?如果你想查詢某個目錄下的所有的wor...
正規表示式學習筆記 二 簡單的正規表示式
一 簡單的正規表示式 注意 在使用正規表示式的時候,會發現幾乎所有的問題都有不止一種解決方法。有的比較簡單,有的比較快速,有的相容性很好,有的功能更全,同乙個問題往往會有多種解決方案。二 匹配單個字元 1 匹配純文字 直接輸入文字,就可以匹配。如 i am a boy.輸入正規表示式 am 2 多個...
認識正規表示式
正規表示式是處理字串的強大工具,擁有獨特的語法和獨特的處理引擎,效率可能不如str自帶的方法,但功能十分強大。特殊字元類子正規表示式中的應用 例項描述.匹配除 n 之外的任何單個字元。要匹配包括 n 在內的任意字元,請使用如 n 的模式 a匹配字串開始 b匹配乙個字邊界,即字與空格間的位置。b非字邊...