正則是每個程式員繞不開的堡壘,只有把它攻下來。我覺得正則之所以難,第一難是需要記憶,第二難是要求具備抽象邏輯思維。
簽於網上太多的介紹都是一篇兇悍的短文,邊看邊理解可以,協助記憶不行。又受五筆字型字根表口訣“白手看頭三二斤...”的啟發,
試作“Regex助記口訣”又名“正則打油詩”,版本0.1,絕對原創,仿冒必究,:)
註:本文僅為學習正則時為了便於記憶而作,不能代替系統而全面的學習過程,錯漏之處,敬請指正!
正則其實也勢利,削尖頭來把錢揣; (指開始符號^和結尾符號$)
特殊符號認不了,弄個倒杠來引路; (指/. /*等特殊符號)
倒杠後面跟小w, 數字字母來表示; (/w跟數字字母;/d跟數字)
倒杠後面跟小d, 只有數字來表示;
倒杠後面跟小a, 警示符號嘀一聲;
倒杠後面跟小b, 單詞分界或退格;
倒杠後面跟小t, 定位字元號很明了;
倒杠後面跟小r, 斷行符號符號知道了;
倒杠後面跟小s, 空格符號很重要;
小寫跟罷跟大寫,多得實在不得了;
倒杠後面跟大W, 字母數字靠邊站;
倒杠後面跟大S, 空白也就靠邊站;
倒杠後面跟大D, 數字從此靠邊站;
倒框後面跟大B, 不含開頭和結尾;
單個字元要重複,三個符號來幫忙; (* + ?)
0 星加1 到無窮,問號只管0 和1; (*表0-n;+表1-n;?表0-1次重複)
花括弧裡學問多,重複操作能力強; ({n} {n,} {n,m})
若要重複字串,園括把它括起來; ((abc){3} 表示字串“abc”重複3次 )
特殊集合自訂,中括弧來幫你忙;
轉義符號行不通,一個一個來排隊;
實在多得排不下,橫杠請來幫個忙; ([1-5])
尖頭放進中括弧,反義定義威力大; ([^a]指除“a”外的任一字元 )
1豎作用可不小,兩邊正則互替換; (鍵盤上與“/”是同一個鍵)
1豎能用很多次,複雜定義很方便;
園括弧,用途多;
反向引用指定組,數字排符對應它; (“/b(/w+)/b/s+/1/b”中的數字“1”引用前面的“(/w+)”)
支援組名自訂,問號加上角括弧; (“(?<Word>/w+)”中把“/w+”定義為組,組名為“Word”)
園括弧,用途多,位置指定全靠它;
問號等號字串,定位字串前面; (“/b/w+(?=ing/b)”定位“ing”前面的字串)
若要定位串後面,中間插個小於符號; (“(?<=/bsub)/w+/b”定位“sub”後面的字串)
問號加個驚歎號,後面跟串字串;
PHPer都知道, !是取反的意思;
後面不跟這一串,統統符合來報到; (“/w*d(?!og)/w*”,“dog”不符合,“do”符合)
問號小於驚歎號,後面跟串字串;
前面不放這一串,統統符合來報到;
點號星號很貪婪,加個問號不貪婪;
加號問號有保底,至少重複一次多;
兩個問號老規矩,0次1次團團轉;
花括弧後跟個?,貪婪變成不貪婪;
還有很多裝不下,等著以後來增加。