come on 正則表達式

打個廣告吧,百度一下正則表達式,那個30分鐘入門教程寫的不賴,,使我對正則感了點興趣,,然後還有本書,我正看的,不錯,《精通正則表達式》。thanks


上一次講了匹配單個字符時,用到的具有範圍性的字符,如:\d等,和具有量詞作用的字符*等。

字符組:

量詞暫時不提,先說具有範圍性的字符。其實,所有的,都可以看作字符數組,格式如:[xxxx],具有的單個字符如s,可以看作[s],數組裏只含有一個字符s,.可以看作包含了全部字符的字符數組,\d可以看作包含了1到9的數字。and等等。。記住:匹配單個字符時,都可以使用字符數組來匹配,,匹配多個時,就可以結合量詞。

現在是查找字符組內的內容,如果想查找字符組以外的其他字符呢,,可以使用[^x],表示匹配一個不是x字符。[^1234],匹配不是1、2、3、4的字符。爲了方便,正則引擎又讓\多潛了幾個字符。

\D不是數字的字符

\W不是(英語)字的字符

\S不是空白字符的字符

[^123w]不是1或者2或者3或者w的字符

其中字符^,是已經被潛了的字符,在方括號裏表示“非”的意思,在下面要介紹的中,表示字符串的開頭的位置。


進行位置的查找:

源字符串:abcdefg123woshihaoren_nishidashen

上面說的都是匹配字符,現在說下位置吧。^匹配源字符串第一個字符前面的位置,$匹配源字符串的末尾。

例如:正則表達式^abcd可以得到匹配,而^bcd不行。。dashen$可以匹配,dashe$不可以。^abc$不行,而^abcdefg123woshihaoren_nishidashen$可以。

環視:

如果你想從源字符nishidashen開始匹配,那麼需要先找到n這個字符,怎麼匹配nishidashen的n呢,,這時需要用到環視了(就是左看看,右看看)。

順序環視:(?=nishi),即向右(後)看,這個表示的是個位置,這樣解釋:找到這個位置,它的右邊跟着的是nishi這個正則表達式。so滿足了吧,全部正則就是(?=nishi)nishidashen

逆序環視:(?<=haoren_),即向左(前)看,解釋:找到這個位置,它的左邊是haoren_這個正則表達式。全部正則是:(?<=haoren_)nishidashen

友情提示:

我爲了記住這個是這麼想的:順序環視的結構是(?=x)想象爲(?>=x),把箭頭理解爲接下來是什麼,解釋爲:先找個位置,這個位置後(右)面是x,,而逆序環視:(?<=x),先找到x,然後它的後面就是需要找的位置。


剛纔是找哪個位置後面有什麼,如果要找的位置後面不要什麼呢,就用否定就行。

(?=x)這樣一個位置:後面跟着x

(?<=x)這樣一個位置:前面是x

(?!x)這樣一個位置:後面不能是x

(?<!x)這樣一個位置:前面不能是x


其他的東西。例如(abcd|hhh|235),括號,然後中間有|,表示是或的意思,即匹配abcd或者hhh或者235,在這裏,abcd是一個整體,hhh是,235是。。具體的情況自己百度下吧,,真心說不下去了,,有話說不去,有火不敢發,,,,看着自己寫的,越來越雜亂無章了。。stop下吧。。


有麼有人感覺到我的英語很垃圾。。哇哈哈



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章