淺析Ruby中的正則表達(dá)式的使用
如果只是需要中查找字符串的 text, 不要使用正則表達(dá)式:string['text']
針對(duì)簡(jiǎn)單的結(jié)構(gòu), 你可以直接使用string[/RE/]的方式來(lái)查詢(xún).
match = string[/regexp/] # get content of matched regexp first_group = string[/text(grp)/, 1] # get content of captured group string[/text (grp)/, 1] = 'replace' # string => 'text replace'
當(dāng)你不需要替結(jié)果分組時(shí),使用非分組的群組。
/(first|second)/ # bad /(?:first|second)/ # good
不要使用 Perl 遺風(fēng)的變量來(lái)表示匹配的正則分組(如 $1,$2 等),使用 Regexp.last_match[n] 作為替代。
/(regexp)/ =~ string ... # bad process $1 # good process Regexp.last_match[1]
避免使用數(shù)字化命名分組很難明白他們代表的意思。命名群組來(lái)替代。
# bad /(regexp)/ =~ string ... process Regexp.last_match[1] # good /(?<meaningful_var>regexp)/ =~ string ... process meaningful_var
字符類(lèi)有以下幾個(gè)特殊關(guān)鍵字值得注意: ^, -, \, ], 所以, 不要轉(zhuǎn)義 . 或者 [] 中的括號(hào)。
注意, ^ 和 $ , 他們匹配行首和行尾, 而不是一個(gè)字符串的結(jié)尾, 如果你想匹配整個(gè)字符串, 用 \A 和 \Z。
string = "some injection\nusername" string[/^username$/] # matches string[/\Ausername\Z/] # don't match
針對(duì)復(fù)雜的正則表達(dá)式,使用 x 修飾符。可提高可讀性并可以加入有用的注釋。只是要注意空白字符會(huì)被忽略。
regexp = %r{
start # some text
\s # white space char
(group) # first group
(?:alt1|alt2) # some alternation
end
}x
sub/gsub 也支持哈希以及代碼塊形式語(yǔ)法, 可用于復(fù)雜情形下的替換操作.
相關(guān)文章
Ruby on Rails遷移時(shí)的一些注意事項(xiàng)
這篇文章主要介紹了Ruby on Rails遷移時(shí)的一些注意事項(xiàng),包括建議的使用change方法取代up與down方法等細(xì)節(jié),需要的朋友可以參考下2015-08-08
Ubuntu系統(tǒng)安裝Ruby語(yǔ)言的三種方法
這篇文章主要介紹了Ubuntu系統(tǒng)安裝Ruby語(yǔ)言的三種方法,本文講解了使用apt-get安裝、使用brightbox ppa倉(cāng)庫(kù)安裝、使用RVM安裝3種方法,需要的朋友可以參考下2015-01-01
一個(gè)簡(jiǎn)單的Ruby可逆加密解密類(lèi)
這篇文章主要介紹了一個(gè)簡(jiǎn)單的Ruby可逆加密解密類(lèi),需要的朋友可以參考下2014-05-05
Ruby實(shí)現(xiàn)的最優(yōu)二叉查找樹(shù)算法
這篇文章主要介紹了Ruby實(shí)現(xiàn)的最優(yōu)二叉查找樹(shù)算法,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-05-05
Ruby設(shè)計(jì)模式編程中對(duì)外觀模式的應(yīng)用實(shí)例分析
這篇文章主要介紹了Ruby設(shè)計(jì)模式編程中對(duì)外觀模式的應(yīng)用實(shí)例分析,外觀模式在Ruby on Rails開(kāi)發(fā)項(xiàng)目中也經(jīng)常被用到,需要的朋友可以參考下2016-03-03
ruby實(shí)現(xiàn)網(wǎng)頁(yè)圖片抓取
本文給大家分享的是個(gè)人使用ruby編寫(xiě)的抓取網(wǎng)頁(yè)圖片的代碼,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。2015-06-06
對(duì)優(yōu)化Ruby on Rails性能的一些辦法的探究
這篇文章主要介紹了對(duì)優(yōu)化Ruby on Rails性能的一些辦法的一些探究,包括避免內(nèi)存密集型的應(yīng)用和GC等相關(guān)問(wèn)題的探討,需要的朋友可以參考下2015-11-11

