Ruby大部分的內建類型都和其它的程式設計語言很相似。主要有strings,integers,floats,arrays等等 。然而,只有指令碼語言,
如Ruby,Perl,和awk等提供了內建運算式類型的支援。慚愧的是:Regex儘管比較隱蔽,但卻是 一個很強大的文本處理工具。
內建它們比單純的添加介面類庫有著很大的區別。
Regex是使用指定的模式比對字元串的一種簡單的方法。在Ruby中,建立Regex的典型方式 是把模式寫在兩個斜線之間(/pattern/)。
畢竟,Ruby就是Ruby,Regex也是對象,也能像對象般操作。
例如,你可以使用下面的Regex寫一個模式,它匹配一個字串中包含有Perl或Python。
/Perl|Python/
在正斜線體內,是兩個我們要匹配的字串,它們使用(|)分隔。這個管道符的意思是"左邊的或者 右邊的",在這個模式中是Perl或者Python。
你還可以在模式中使用括弧,就像是在算術運算式中使用的那樣,因此這個模式還可以寫成
/P(erl|ython)/
你還可以在模式中指定重複。/ab+c/匹配字串中一個a後面有一個或多個b然後跟著是一個c。把+號 換成*號,/ab*c/建立的Regex是
匹配一個a後面跟著0個或多個b然後跟著是一個c。
你還可以在模式中匹配一組字元。常用的字元類型例子有\s,它匹配一個空白字元(space,tab,換 行符,等等);\d匹配任一數字;
\w匹配任意的典型單詞字元。句號(.)匹配(基本上)任一字元。
我們把所有這些組合起來,做成實用的Regex。
/\d\d:\d\d:\d\d/ # a time such as 12:34:56/Perl.*Python/ # Perl, zero or more other chars, then Python/Perl Python/ # Perl, a space, and Python/Perl *Python/ # Perl, zero or more spaces, and Python/Perl +Python/ # Perl, one or more spaces, and Python/Perl\s+Python/ # Perl, whitespace characters, then Python/Ruby (Perl|Python)/ # Ruby, a space, and either Perl or Python