您好,登錄后才能下訂單哦!
1顯式的正則表達式調用
有兩個對象,一個是模式對象,一個是匹配結果對象
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式的正則表達式調用
這里面隱含了re對象、以及match對象
message = "Time: 12:34am" message =~ /(\d+):(\d+)/ p $&, $1, $2, $3, $`, $'
3兩個細節
=~表達式是有返回值的,如果不匹配返回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/
^$是真正意義上行的起始點和結束點
\A\z是真正意義上字符串的起始點和結束點
\Z忽略字符串結束時的那個回車符,但是字符串中間的回車符不忽略
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/
這個網站測試錨點時回車必須敲出來,而不是用\n,應該是字符串識別的問題。
用show_regexp是直接回車,還是\n效果是一樣的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。