国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ruby 正則表達式 教程

2019-10-26 19:18:41
字體:
來源:轉載
供稿:網友
我們再看一個更有趣的程序.這次我們來測試一個字符串是否和一個由簡明模式(concise pattern)編碼產生的描述相匹配.

在這些模式(pattern)里,一些字符或字符組合都有獨特的意義,包括: 

代碼如下:
[]  范圍描述符 (比如,[a - z] 表示在a 到 z 范圍內的一個字母)   

/w  字母或數字;相當于 [0-9A-Za-z]  

/W  非字母,數字  

/s  [ /t/n/r/f]空字符;相當于 [ /t/n/r/f]  

/S  非空字符  

/d  [0-9]數字;相當于 [0-9]  

/D  非數字字符  

/b  退格符 (0x08) (僅在范圍描述符內部時)  

/b  字邊界(word boundary) (在范圍描述符外部時)  

/B  非字邊界  

*  前面元素出現0或多次  

+  前面元素出現1或多次  

{m,n}  前面元素最少出現m次,最多出現n次  

?  前面元素最多出現1次;相當于 {0,1}  

|  與前面或后面的表達式匹配  

()  群( grouping)   


那些模式中共同使用的古怪詞匯叫做正則表達式.就象Perl一樣,Ruby也用前斜杠(而不是雙引號)將它們括起來.如果你以前從未使用過正則表達式,也許它們看起來除了規則(regular)什么都不是,但花上一點兒時間了解它們是明智的.當你需要對字符串進行模式匹配,查找或其它操作時,它的高效的表達能力能治好你的頭痛(并節約很多行代碼).

舉個例子,設想我們想要測試一個字符串是否符合這樣的描述信息"由小寫f開頭,跟一個大寫字母,并可能跟許多非小寫字母在后面."如果你是一個老練的C程序員,大概你的頭腦里已經裝滿幾十行程序了,對不對?承認吧,你難以控制住自己.在Ruby里,你只需要將你的字符串用正則表達式/^f[A-Z](^[a-z])*$/檢驗一下就可以了.

那"一個由<>括起來的16位數呢"?沒問題.

代碼如下:
ruby> def chab(s)   # "contains hex in angle brackets" 
    |    (s =~ /<0(x|X)(/d|[a-f]|[A-F])+>/) != nil 
    | end 
  nil 
ruby> chab "Not this one." 
  false 
ruby> chab "Maybe this? {0x35}"    # wrong kind of brackets 
  false 
ruby> chab "Or this? <0x38z7e>"    # bogus hex digit 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 霍城县| 福清市| 黔南| 乳山市| 锡林浩特市| 内江市| 衡水市| 定兴县| 临颍县| 翁牛特旗| 禄劝| 安陆市| 元朗区| 东海县| 崇阳县| 乐陵市| 邵东县| 望江县| 南康市| 安福县| 河源市| 大邑县| 沈丘县| 喀什市| 天等县| 铁岭市| 柯坪县| 宁明县| 华坪县| 襄汾县| 荣昌县| 离岛区| 大兴区| 漯河市| 大宁县| 祥云县| 曲周县| 禄丰县| 阜平县| 泰顺县| 修武县|