Ruby 正規表示式

2021-06-18 09:39:23 字數 1632 閱讀 7621

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

ruby 正規表示式

ruby支援的正規表示式符號 元字元 有這麼個規則 不帶 的數字和字母不是元字元 帶 的符號也不是元字元 下文中出現的 匹配多位元組字元的正規表示式 是指,通過使用 kcode進行設定,或顯式地使用漢字選項 請參考正規表示式字面值 等方式進行的匹配多位元組字元的正規表示式。行首。與字串的頭部或換行符...

ruby正規表示式

ruby中常會用到正規表示式。正規表示式是用來表達字串的模式 pattern 的。也可以這麼理解 我們使用正規表示式來表示某種搜尋規則,然後使用該正規表示式來完成字串的搜尋工作。舉個例子,假定有這樣的搜尋規則 字串以 foo 開始,以 r 結束 那麼就可以使用以下正規表示式來表示該規則。foo.r ...