本文文字較多,請大家耐心閱讀。我保證,只要是從頭到尾認真閱讀完畢的,基本上百分之八十以上的正規表示式都可以看明白,至於速度,就在於你平常練習的水平了。正規表示式用途
1.寫爬蟲的時候對於網頁內容的匹配
2.提取資料和替換資料
3.進行資料驗證,比如某一字串驗證是否為手機號
基本上以上三種用途比較多。我學習它的原因就是為之後寫爬蟲打下基礎。
正規表示式基礎
再補充一點,?與等價 ,*與等價,+與等價 括號裡面右邊不寫數字的話代表可以無限多。
上面基本上就是經常用到的特殊字元了,如果在後面的例子**現別的字元,再進行介紹。
正規表示式例子五講
匹配數字
目標匹配:0、0123、2343534
^[0-9]*$
這個規則可以匹配任何數字。
^ 和$ 作為開始和結尾,[0-9] 表示字元集合 範圍是0-9,當然也可以寫成
[0|1|2|3|4|5|6|7|8|9] 這兩種形式是等價的 | 表示一種或的關係。*表示0或者很多 也就是對於前面的字元範圍集合[0-9],可以進行0次或多次匹配。 這個規則我可以匹配到 0、01、1234、234145
匹配位數限制的數字
目標匹配:000、12、2345
2-4位的數字:^\d$
上述可以匹配 位數在2-4位之間的數字,包括2和4.
\d 表示數字字元 相當於[0-9]
{} 具有限制作用 表示前面表示式所匹配的2-4個字元
舉一反三 :
匹配具有3-5個小寫字母的字元 如何寫呢?
^\w$ 或者
^[a-z]$
第一種方法能夠匹配aaa 單同時也能夠匹配000 不夠嚴謹
第二種方法更加嚴謹一些。
貪婪和非貪婪字元的匹配
目標匹配:looo 和lo
輸入 looo
lo+ 等效與 ^lo+$ 結果為 looo
lo+?等效與^lo+? 結果為lo
首先解釋一下^ 和$對於表示式的具體作用。
^ 表示輸入字串開始的位置,也就是當我輸入looo時,^表示第乙個輸入l的位置。
對於 $相似,表示輸入字串結束的位置,也就是looo的第三個o的位置。
加入這兩個相當於就是指定了位置,不可以自由的從中間開始進行匹配
舉個例子:
o+ 可以從looo 匹配到ooo
但是^o+ 就匹配不成功 原因是第乙個字元是l,加入 ^必須從第乙個字元開始。
同樣的 o+? $ 只能匹配到000,而o+? 可以匹配到o ,原因是 $ 限制了字串結尾的位置。
再解釋一下?在這個例子中的作用。
這個例子中 ?的作用是使其前面表示式變得非貪婪。就是我能讓你匹配到乙個就不讓你匹配到兩個。正如上述例子中o+ 匹配為ooo 而 o+? 只能匹配到 o。
負值字元
目標匹配:s、c、l
輸入:school
[scl] 結果輸出 s、c、l
[^ho] 結果輸出s、c、l
這裡的^的作用與前面咱們說到的定位符的作用不一樣,在這裡,你可以把它理解為 非。 也就是除了ho 其他字元都可以進行匹配。
介紹兩種特殊的模型
目標匹配:wall、well
輸入:wall、well
w(?:all|ell) 等價與 wall|well 輸出結果同上
w(?=all) 輸出為 w 而這個w是wall的w 不是well的w
?:叫做非獲取匹配,意思就是 括號裡不進行資料儲存,只是作為前面w字元後的乙個匹配規則 ,整體輸出為w加上裡面匹配規則所匹配的字元。
?= 叫做正向肯定偵察 ,同時也是乙個非獲取匹配,但是輸出與上面不一樣,只是輸出前面的w,括號裡面只是作為前面w字元所在位置和哪個字元的規則。
當然還有反向肯定 反向否定 等等 具體可以檢視菜鳥教程裡面詳細的介紹
菜鳥教程位址
如果有更好的例子,我也會及時更新上去。
H 遇到百分之百的女孩
火車要開了,女孩一直目送那個男孩的離開,一步,兩步,直到男孩踏上車都沒有回過頭看女孩一眼。火車開了,女孩淚如雨下 我一直在等他回頭,只要一眼,我就跟隨他去。車上,男孩看著急速倒退的風景心口隱隱作痛 為什麼你不叫我一聲,只要一聲,我就為你留下 現在時光老人走在你的面前,對你說,如果你能回答我乙個問題,...
軟體專案開發中的百分之九十效應
在軟體專案管理中,經常遇到這樣的情況 進度到百分之九十後開始停滯,要花很長很長時間很大很大代價 甚至超過前百分之九十所花費的工時 工期 才能完成最後的百分之十。我把這種情況叫作 軟體專案的百分之九十效應。西漢 劉向 戰國策 秦策五 詩云 行百里者半九十。此言末路之難也。通俗地講,做事情越接近成功越難...
mysql查詢前百分之幾的資料(以25 為例)
因為mysql沒有top的用法,而且limit後也不支援子查詢所以實現相對麻煩,可以使用類似於oracle中偽列的用法 select rownum rownum 1 student.from select rownum 0 row,student 可以看到表中有5條數資料 補充一下這裡的rownum...