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

首頁 > 編程 > Ruby > 正文

Ruby中使用正則表達式的基礎指引

2020-10-29 19:38:02
字體:
來源:轉載
供稿:網友

正則表達式的內建支持通常只限于腳本語言如Ruby,Perl和awk等,這是一個恥辱:盡管正則表達式很神秘,但它是一個強大的文本處理工具。通過內建而不是通過程序庫接口來支持它,有很大的不同。

正則表達式只是一種指定字符模式的方法,這個字符模式會在字符串中進行匹配。在Ruby中,通常在斜線之間(/pattern/)編寫模式(pattern)來創建正則表達式。同時,Ruby就是Ruby,正則表達式是對象并且可以當作對象來操作。

比如,可以使用如下的正則表達式來編寫模式,它會匹配包含Perl或Python的字符串。

復制代碼 代碼如下:
/Perl|Python/

前面那個斜線界定了這個模式,模式由要匹配的兩個子字符串組成,它們被管道符(|)分開。管道符意味著“要么右邊的字符串,要么左邊的字符串”。在這個例子中,它們分別是Perl或Python。就像在算術表達式中的那樣,可以在模式中使用括號,因此可以把模式寫成

復制代碼 代碼如下:
/P(erl|ython)/

也可以在模式中指定重復(repetition)。/ab+c/匹配一個含有a,后面跟著一個或多個b,其后是c的字符串。把模式中的加號改成星號,/ab*c/創建了一個匹配含有a,零個或多個b和然后是c的正則表達式

也可以在模式中匹配一組或多組字符。一些常見的例子是字符類(character classes)如/s,它匹配空白字符(空格符、制表符、回車換行符等等);/d 匹配任何數字;還有/w,它匹配會出現在一個詞內的任何字符。一個點(.)匹配幾乎任意字符。

一旦創建了模式,不去用它總不好意思。=~匹配操作符可以用正則表達式來匹配字符串。如果在字符串中發現了模式,=~返回模式的開始位置,否則它返回nil。這意味著可以在if和while語句中把正則表達式當作條件使用。比如,如果字符串包含了Perl或Python,下面的代碼輸出一條消息。

復制代碼 代碼如下:
if line=~/Perl|Python/

 puts "Scripting language mentioned:#{line}"

end

正則表達式匹配到的字符串部分,可以用Ruby的其中一種替換方法,替換為其他文本。

復制代碼 代碼如下:
line.sub(/Perl/,'Ruby')                               #用'Ruby'替換第一個'Perl'

line.gsub(/Python/,'Ruby')                         #用'Ruby'替換所有的'Python'

使用下面語句可以用Ruby替換出現Perl和Python的每個地方。

復制代碼 代碼如下:
line.gsub(/Perl|Python/,'Ruby')

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南江县| 海安县| 松阳县| 马龙县| 玉环县| 北安市| 京山县| 门头沟区| 逊克县| 巨野县| 武乡县| 新津县| 静宁县| 泰安市| 贺州市| 呼玛县| 崇义县| 大余县| 乐都县| 微山县| 日喀则市| 赫章县| 兰溪市| 桃园市| 海口市| 中宁县| 靖安县| 连江县| 咸阳市| 建阳市| 阳信县| 临沧市| 万全县| 准格尔旗| 铜陵市| 曲麻莱县| 克东县| 华坪县| 衡水市| 安徽省| 繁峙县|