Ruby中使用正則表達(dá)式的基礎(chǔ)指引
正則表達(dá)式的內(nèi)建支持通常只限于腳本語言如Ruby,Perl和awk等,這是一個(gè)恥辱:盡管正則表達(dá)式很神秘,但它是一個(gè)強(qiáng)大的文本處理工具。通過內(nèi)建而不是通過程序庫接口來支持它,有很大的不同。
正則表達(dá)式只是一種指定字符模式的方法,這個(gè)字符模式會(huì)在字符串中進(jìn)行匹配。在Ruby中,通常在斜線之間(/pattern/)編寫模式(pattern)來創(chuàng)建正則表達(dá)式。同時(shí),Ruby就是Ruby,正則表達(dá)式是對(duì)象并且可以當(dāng)作對(duì)象來操作。
比如,可以使用如下的正則表達(dá)式來編寫模式,它會(huì)匹配包含Perl或Python的字符串。
前面那個(gè)斜線界定了這個(gè)模式,模式由要匹配的兩個(gè)子字符串組成,它們被管道符(|)分開。管道符意味著“要么右邊的字符串,要么左邊的字符串”。在這個(gè)例子中,它們分別是Perl或Python。就像在算術(shù)表達(dá)式中的那樣,可以在模式中使用括號(hào),因此可以把模式寫成
也可以在模式中指定重復(fù)(repetition)。/ab+c/匹配一個(gè)含有a,后面跟著一個(gè)或多個(gè)b,其后是c的字符串。把模式中的加號(hào)改成星號(hào),/ab*c/創(chuàng)建了一個(gè)匹配含有a,零個(gè)或多個(gè)b和然后是c的正則表達(dá)式
也可以在模式中匹配一組或多組字符。一些常見的例子是字符類(character classes)如\s,它匹配空白字符(空格符、制表符、回車換行符等等);\d 匹配任何數(shù)字;還有\(zhòng)w,它匹配會(huì)出現(xiàn)在一個(gè)詞內(nèi)的任何字符。一個(gè)點(diǎn)(.)匹配幾乎任意字符。
一旦創(chuàng)建了模式,不去用它總不好意思。=~匹配操作符可以用正則表達(dá)式來匹配字符串。如果在字符串中發(fā)現(xiàn)了模式,=~返回模式的開始位置,否則它返回nil。這意味著可以在if和while語句中把正則表達(dá)式當(dāng)作條件使用。比如,如果字符串包含了Perl或Python,下面的代碼輸出一條消息。
puts "Scripting language mentioned:#{line}"
end
正則表達(dá)式匹配到的字符串部分,可以用Ruby的其中一種替換方法,替換為其他文本。
line.gsub(/Python/,'Ruby') #用'Ruby'替換所有的'Python'
使用下面語句可以用Ruby替換出現(xiàn)Perl和Python的每個(gè)地方。
相關(guān)文章
ruby判斷一個(gè)數(shù)是否為質(zhì)數(shù)(素?cái)?shù))示例
這篇文章主要介紹了ruby判斷一個(gè)數(shù)是否為質(zhì)數(shù)(素?cái)?shù))示例,需要的朋友可以參考下2014-05-05Ruby升級(jí)后no such file to load -- readline解決辦法
這篇文章主要介紹了Ruby升級(jí)后no such file to load -- readline解決辦法,需要的朋友可以參考下2015-04-04Ruby中一些基本語法知識(shí)點(diǎn)的羅列匯總
這篇文章主要介紹了Ruby中一些基本語法知識(shí)點(diǎn)的羅列匯總,包括Ruby中的注釋和標(biāo)識(shí)符等基礎(chǔ)內(nèi)容,需要的朋友可以參考下2015-05-05