詳細介紹Ruby中的正規表示式

2022-10-06 06:57:11 字數 1869 閱讀 5550

正規表示式是一種特殊序列的字元,它通過使用有專門語法的模式來匹配或查詢其他字串或字串集合。

語法正規表示式從字面上看是一種介於斜槓之間或介於跟在 %r 後的任意分隔符之間的模式,如下所示:

/pattern/

/pattern/im # 可以指定選項

%r!/usr/local! # 一般的分隔的正規表示式

例項#!/usr/bin/ruby

line1 = "cats are smarter than dogs";

line2 = "dogs also like meat";

if ( line1 =~ /cats(.*)/ )

puts "line1 contains cats"

endif ( line2 =~ /cats(.*)/ )

puts "line2 contains dogs"

end這將產生以下結果:

line1 contains cats

正規表示式修飾符

正規表示式從字面上看可能包含乙個可選的修飾符,用於控制各方面的匹配。修飾符在第二個斜槓字元後指定,如上面例項所示。下標列出了 可能的修飾符:

就像字hccuati符串通過 %q 進行分隔一樣,ruby 允許您以 %r 作為正規表示式的開頭,後面跟著任意分隔符。這在描述包含大量您不想轉義的斜槓字元時非常有用。

# 下面匹配單個斜槓字元,不轉義

%r|/|

# flag 字元可通過下面的語法進行匹配

%r[(.*)>]i

正規表示式模式

除了控制字元,(+ ? . * ^ $ ( ) [ ] | hccuati),其他所有字元都匹配本身。您可以通過在控制字元前放置乙個反斜槓來對控制字元進行轉義。

下表列出了 ruby 中可用的正規表示式語法。

搜尋和替換

sub 和 gsub 及它們的替代變數 sub! 和 gsub! 是使用正規表示式時重要的字串方法。

所有這些方法都是使用正規表示式模式執行搜尋與替換操作。sub 和 sub! 替換模式的第一次出現,gsub 和 gsub! 替換模式的所有出現。

sub 和 gsub 返回乙個新的字串,保持原始的字串不被修改,而 sub! 和 gsub! 則會修改它們呼叫的字串。

下面是乙個例項:

#!/usr/bin/ruby

phone = "2004-959-559 #this is phone number"

# 刪除 ruby 的注釋

phone = phone.sub!(/#.*$/, "")

puts "phone num : #"

# 移除數字以外的其他字元

phone = phone.gsub!(/\d/, "")

puts "phone num : #"

這將產生以下結果:

phone num : 2004-959-559

phone num : 2004959559

下面是另乙個例項:

#!/usr/bin/ruby

text = "rails www.cppcns.comare rails, really good ruby on rails"

# 把所有的 "rails" 改為 "rails"

text.gsub!("rails", "rails")

# 把所有的單詞 "rails" 都改成首字母大寫

text.gsub!(/\brails\b/, "rails")

puts "#"

這將產生以下結果:

rails are rails, really good ruby on rails

本文標題: 詳細介紹ruby中的正規表示式

本文位址: /wangluo/re/122426.html

正規表示式詳細介紹

單個表示 1 d 數字 2 d 非數字 注 大小寫就是取反的意思 3 w 任意乙個字母或數字或下劃線 4 s 空白符 換行 製表符 空格 5 任意字元 除了換行符 自定義字元集合 表示匹配內的任意乙個字元,是乙個或運算,比如 123 就表示是數字1或數字2或數字3 表示非運算,比如 123 表示除了...

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 代表任意數字...