Ruby正規表示式(上)

2021-07-02 03:50:27 字數 1719 閱讀 4123

ruby的正規表示式以"//"作為構造方法。表示式返回乙個regexp的物件。

一般規則:

/a/匹配字元a。   

/\?/匹配特殊字元?。特殊字元包括^, $, ? , ., /, \, [, ], , (, ), +, *.   

.匹配任意字元,例如/a./匹配ab和ac。   

/[ab]c/匹配ac和bc,之間代表範圍。例如:/[a-z]/ , /[a-za-z0-9]/。   

/[^a-za-z0-9]/匹配不在該範圍內的字串。   

/[\d]/代表任意數字

/[\w]/代表任意字母,數字或者_

/[\s]/代表空白字元,包括空格,tab和換行。   

/[\d]/,/[\w]/,/[\s]/均為上述的否定情況。

高階規則:

?代表0或1個字元。/mrs?\.?/匹配"mr","mrs","mr.","mrs."。

*代表0或多個字元。/hello*/匹配"hello","hellojack"。

+代表1或多個字元。/a+c/匹配:"abc","abbdrec"等等。

/d/匹配3個數字。

/d/匹配1-10個數字。

/d/匹配3個數字以上。

/([a-z]\d)/匹配首位是大寫字母,後面4個是數字的字串。

下圖匹配的是:m後面是字元r, 後面是0或1個字元s, 在後面是0或1個字元"." , 匹配mr、mrs、mr.、mrs.

下面可以匹配

正規表示式操作

string和regexp均支援=~和match 2個查詢匹配方法

可以看出,如果能夠匹配,=~返回匹配的字串位置,而match返回乙個matchdata物件。如果不匹配返回nil。

matchdata可以取出其中符合各個子匹配的內容。看下面的例子:

m[0]返回匹配主表示式的字串

下面的方法是等同的:

m[n] == m.captures[n]

ruby也自動的為我們填寫了一些全域性變數,它們以數字做名: $1,$2,等等,$1包含的是正規表示式中從左側開始的第一對小括號內的子模式所匹配的字串

我們看出匹配時,是從外到內,從左到右的順序

其它的一些方法

Ruby正規表示式(上)

ruby的正規表示式以 作為構造方法。表示式返回乙個regexp的物件。一般規則 a 匹配字元a。匹配特殊字元?特殊字元包括 匹配任意字元,例如 a.匹配ab和ac。ab c 匹配ac和bc,之間代表範圍。例如 a z a za z0 9 a za z0 9 匹配不在該範圍內的字串。d 代表任意數字...

ruby正規表示式

ruby用 將正規表示式括起來。表示開頭,表示結尾,表示0個以上的任意字元。現在就講講正規表示式的規則的寫法。正規表示式中有很多上述的具有特別意義的字元。首先是下列字元。範圍描述符。a z 表示從a到z之間的任意乙個。w 英文本母和數字。即 0 9 a z a z w 非英文本母和數字 s 空字元,...

Ruby 正規表示式

ruby的正規表示式以 作為構造方法。表示式返回乙個regexp的物件。一般規則 a 匹配字元a。匹配特殊字元?特殊字元包括 匹配任意字元,例如 a.匹配ab和ac。ab c 匹配ac和bc,之間代表範圍。例如 a z a za z0 9 a za z0 9 匹配不在該範圍內的字串。d 代表任意數字...