1顯式的正則表達式調(diào)用
成都網(wǎng)站建設(shè)、成都網(wǎng)站制作介紹好的網(wǎng)站是理念、設(shè)計和技術(shù)的結(jié)合。創(chuàng)新互聯(lián)建站擁有的網(wǎng)站設(shè)計理念、多方位的設(shè)計風(fēng)格、經(jīng)驗豐富的設(shè)計團隊。提供PC端+手機端網(wǎng)站建設(shè),用營銷思維進行網(wǎng)站設(shè)計、采用先進技術(shù)開源代碼、注重用戶體驗與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。
有兩個對象,一個是模式對象,一個是匹配結(jié)果對象
re = /(\d+):(\d+)/ md = re.match("Time: 12:34am") p md, md[0], md[1], md[2], md[3], md.pre_match, md.post_match
2Perl式的正則表達式調(diào)用
這里面隱含了re對象、以及match對象
message = "Time: 12:34am" message =~ /(\d+):(\d+)/ p $&, $1, $2, $3, $`, $'
3兩個細節(jié)
=~表達式是有返回值的,如果不匹配返回nil,匹配則返回第一個字符的位置
message = "Time: 12:34am" a = (message =~ /(\d+):(\d+)/) p a
ruby是在match對象和$1這樣的對象之間建立了一座橋梁,即$~
re = /(\d+):(\d+)/ md1 = re.match("Time: 12:34am") md2 = re.match("Time: 10:30pm") p $1, $2 $~ = md1 p $1, $2
4測試正則表達式匹配效果的代碼
def show_regexp(a, re) if a =~ re "#{$`}<<#{$&}>>#{$'}" else "no match" end end p show_regexp("abc\ndef\nghi", /abc/)
5錨點
參考http://fsjoy.blog.51cto.com/318484/68433/
^$是真正意義上行的起始點和結(jié)束點
\A\z是真正意義上字符串的起始點和結(jié)束點
\Z忽略字符串結(jié)束時的那個回車符,但是字符串中間的回車符不忽略
def show_regexp(a, re) if a =~ re "#{$`}<<#{$&}>>#{$'}" else "no match" end end p show_regexp("hello world fuck u down towndown gardon ", /gardon\z/)
http://www.rubular.com/
這個網(wǎng)站測試錨點時回車必須敲出來,而不是用\n,應(yīng)該是字符串識別的問題。
用show_regexp是直接回車,還是\n效果是一樣的。