国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

directory search
Ruby用戶指南 3、開(kāi)始 4、簡(jiǎn)單的例子 5、字符串 6、正則表達(dá)式 7、數(shù)組 8、回到那些簡(jiǎn)單的例子 9、流程控制 10、迭代器 11、面向?qū)ο笏季S 12、方法 13、類 14、繼承 15、重載方法 16、訪問(wèn)控制 17、單態(tài)方法 18、模塊 19、過(guò)程對(duì)象 20、變量 21、全局變量 22、實(shí)變量 23、局部變量 24、類常量 25、異常處理:rescue 26、異常處理:ensure 27、存取器 28、對(duì)象的初始化 29、雜項(xiàng) RGSS入門(mén)教程 1、什么是RGSS 2、開(kāi)始:最簡(jiǎn)單的腳本 3、數(shù)據(jù)類型:數(shù)字 4、數(shù)據(jù)類型:常量與變量 5、數(shù)據(jù)類型:字符串 6、控制語(yǔ)句:條件分歧語(yǔ)句 7、控制語(yǔ)句:循環(huán) 8、函數(shù) 9、對(duì)象與類 10、顯示圖片 11、數(shù)組 12、哈希表(關(guān)聯(lián)數(shù)組) 13、類 14、數(shù)據(jù)庫(kù) 15、游戲?qū)ο?/a> 16、精靈的管理 17、窗口的管理 18、活動(dòng)指令 19、場(chǎng)景類 Programming Ruby的翻譯 Programming Ruby: The Pragmatic Programmer's Guide 前言 Roadmap Ruby.new 類,對(duì)象和變量 容器Containers,塊Blocks和迭代Iterators 標(biāo)準(zhǔn)類型 深入方法 表達(dá)式Expressions 異常,捕捉和拋出(已經(jīng)開(kāi)始,by jellen) 模塊 基本輸入輸出 線程和進(jìn)程 當(dāng)遭遇挫折 Ruby和它的世界 Ruby和Web開(kāi)發(fā) Ruby Tk Ruby 和微軟的 Windows 擴(kuò)展Ruby Ruby語(yǔ)言 (by jellen) 類和對(duì)象 (by jellen) Ruby安全 反射Reflection 內(nèi)建類和方法 標(biāo)準(zhǔn)庫(kù) OO設(shè)計(jì) 網(wǎng)絡(luò)和Web庫(kù) Windows支持 內(nèi)嵌文檔 交互式Ruby Shell 支持 Ruby參考手冊(cè) Ruby首頁(yè) 卷首語(yǔ) Ruby的啟動(dòng) 環(huán)境變量 對(duì)象 執(zhí)行 結(jié)束時(shí)的相關(guān)處理 線程 安全模型 正則表達(dá)式 字句構(gòu)造 程序 變量和常數(shù) 字面值 操作符表達(dá)式 控制結(jié)構(gòu) 方法調(diào)用 類/方法的定義 內(nèi)部函數(shù) 內(nèi)部變量 內(nèi)部常數(shù) 內(nèi)部類/模塊/異常類 附加庫(kù) Ruby變更記錄 ruby 1.6 特性 ruby 1.7 特性 Ruby術(shù)語(yǔ)集 Ruby的運(yùn)行平臺(tái) pack模板字符串 sprintf格式 Marshal格式 Ruby FAQ Ruby的陷阱
characters

我們?cè)倏匆粋€(gè)更有趣的程序.這次我們來(lái)測(cè)試一個(gè)字符串是否和一個(gè)由簡(jiǎn)明模式(concise?pattern)編碼產(chǎn)生的描述相匹配.

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

[]??范圍描述符?(比如,[a?-?z]?表示在a?到?z?范圍內(nèi)的一個(gè)字母)??

\w??字母或數(shù)字;相當(dāng)于?[0-9A-Za-z]?

\W??非字母,數(shù)字?

\s??[?\t\n\r\f]空字符;相當(dāng)于?[?\t\n\r\f]?

\S??非空字符?

\d??[0-9]數(shù)字;相當(dāng)于?[0-9]?

\D??非數(shù)字字符?

\b??退格符?(0x08)?(僅在范圍描述符內(nèi)部時(shí))?

\b??字邊界(word?boundary)?(在范圍描述符外部時(shí))?

\B??非字邊界?

*??前面元素出現(xiàn)0或多次?

+??前面元素出現(xiàn)1或多次?

{m,n}??前面元素最少出現(xiàn)m次,最多出現(xiàn)n次?

???前面元素最多出現(xiàn)1次;相當(dāng)于?{0,1}?

|??與前面或后面的表達(dá)式匹配?

()??群(?grouping)?

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

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

那"一個(gè)由<>括起來(lái)的16位數(shù)呢"?沒(méi)問(wèn)題.

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
??false
ruby>?chab?"Okay,?this:?<0xfc0004>."
??true?

雖然,初看起來(lái)正則表達(dá)式挺讓人頭痛的,但你很快會(huì)因能夠如此高效地表達(dá)出你心中的意思而感到滿足.

下面是一個(gè)可以幫助你實(shí)驗(yàn)正則表達(dá)式的小程序,把它存為regx.rb,然后在命令行里輸入'ruby?regx.rb'運(yùn)行.

#?Requires?an?ANSI?terminal!
st?=?"\033[7m"
en?=?"\033[m"
while?TRUE??
????print?"str>?"??
????STDOUT.flush??
????str?=?gets??
????break?if?not?str??
????str.chop!??
????print?"pat>?"??
????STDOUT.flush??
????re?=?gets??
????break?if?not?re??
????re.chop!??
????str.gsub!?re,?"#{st}\\&#{en}"??
????print?str,?"\n"
end
print?"\n"?

這個(gè)小程序要求輸入兩次,一次字符串,一次正則表達(dá)式.輸入的字符串由正則表達(dá)式檢驗(yàn),然后用反視高亮度顯示所有匹配部分.先別管細(xì)節(jié),等會(huì)兒就有代碼分析.

str>?foobar
pat>?^fo+
foobar
~~~?

上面紅色部分將在程序輸入中以反視表示出.下面的"~~~"行是為了方便那些使用基于字符瀏覽器的人.

我們?cè)僭噹讉€(gè)輸入:

str>?abc012dbcd555
pat>?\d
abc012dbcd555

如果讓你感到驚訝,看看本頁(yè)開(kāi)頭部分的那個(gè)表格:?\d與字母d無(wú)關(guān),而是對(duì)應(yīng)于單個(gè)數(shù)字.

如果有不止一種方法能匹配模式會(huì)怎樣呢?

str>?foozboozer
pat>?f.*z
foozboozer
~~~~~~~~?

之所以foozbooz被匹配而不只是fooz,是因?yàn)橐粋€(gè)正則表達(dá)符盡可能匹配最長(zhǎng)的子串.

下面是一個(gè)將冒號(hào)分隔的數(shù)字時(shí)間段從字符串中隔離出來(lái)的模式匹配.

str>?Wed?Feb??7?08:58:04?JST?1996
pat>?[0-9]+:[0-9]+(:[0-9]+)?
Wed?Feb??7?08:58:04?JST?1996

"=~"是一個(gè)用于匹配正則表達(dá)式的匹配(matching)運(yùn)算符;它會(huì)返回在字符串里找到的匹配的位置,或者返回?nil?表示模式無(wú)法匹配.

ruby>?"abcdef"?=~?/d/
???3
ruby>?"aaaaaa"?=~?/d/
???nil? 版權(quán)聲明:RUBY文檔中心的所有文章標(biāo)明[原創(chuàng)]的均為本站作品,版權(quán)屬RUBY中文化計(jì)劃,若轉(zhuǎn)載請(qǐng)注明;標(biāo)明[翻譯]的其外文版權(quán)歸原作者,譯文版權(quán)屬RUBY中文化計(jì)劃;標(biāo)明[轉(zhuǎn)貼]的,若原作者感到侵犯了他的著作權(quán),那么請(qǐng)及時(shí)跟主持人聯(lián)系,我們會(huì)盡快更正。 ?
Previous article: Next article: