ruby用//將正規表示式括起來。^表示開頭,$表示結尾,.*表示0個以上的任意字元。
現在就講講正規表示式的規則的寫法。正規表示式中有很多上述的具有特別意義的字元。首先是下列字元。
[ ]
範圍描述符。[a-z]表示從a到z之間的任意乙個。
/w 英文本母和數字。即[0-9 a-z a-z]。
/w 非英文本母和數字
/s 空字元,即[/t/n/r/f]。
/s 非空字元。
/d 數字,即[0-9]。
/d 非數字。
/b 詞邊界字元(在範圍描述符外部時)
/b 非詞邊界字元
/b 退格符(0x08)(在範圍描述符內部時)
* 前面元素出現0次以上
+ 前面元素出現1次以上
前面元素最少出現m次,最多出現n次
? 前面元素出現0次或1次
| 選擇
( )
群組
其他字元
該字元本身
例如,「^f[a-z]+」表示「第乙個字元是f,後面是若干個從a到z之間的字元」,可以是「fobar」或「fool」等等。這種表達法就是正規表示式(regular expression)。在搜尋字串時正規表示式非常有用,因此在unix的世界裡,正規表示式得到了廣泛的應用。grep程式就是個代表。許多人是不是經常會用到它呢?
為了學會使用正規表示式,先來試試下面這個程式。請用檔名regx.rb將程式儲存下來以後再執行它。
st = "/033[7m"該程式會在第一次輸入的字串中按照第二次輸入的正規表示式的要求尋找合適的字串,並將其以反色顯示出來。下面是執行結果。en = "/033[m"
while true
print "str> "
stdout.flush
str = gets
break if not str
str.chop!
print "pat> "
stdout.flush
re = gets
break if not re
re.chop!
str.gsub! /#/, "#//"
print str, "/n"
endprint "/n"
str> foobar# 實際上foo的部分被反色顯示了。pat> ^fo+
foobar
^^^
再試一試。
str> abc012dbcd555從上例可以看出,該程式可以檢測出多處符合條件的字串。pat> //d
abc012dbcd555
~~~ ~~~
str> foozboozer在這個例子中,正規表示式「f.*z」並非只是對應到fooz,而是一直對應到foozbooz這裡。這是因為,正規表示式總是在符合條件的結果中選擇較長的乙個。pat> f.*z
foozboozer
~~~~~~~~
正規表示式甚至可以寫出讓人一眼看不透的模式,這可能會像謎語一樣有趣。但若過分凝鍊的話,以後就很難搞懂當初的想法了。
str> wed feb 7 08:58:04 jst 1996ruby用』/』將正規表示式括起來。另外還有一些方法會自動將字串變為正規表示式。pat> [0-9]+:[0-9]+(:[0-9]+)?
wed feb 7 08:58:04 jst 1996
~~~~~~~~
% ruby -le 'print "abcdef" =~ /d/'『=~』是使用正規表示式進行匹配的操作符,它返回匹配成功時的位置3% ruby -le 'print "aaaaaa" =~ /d/'
nil
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支援的正規表示式符號 元字元 有這麼個規則 不帶 的數字和字母不是元字元 帶 的符號也不是元字元 下文中出現的 匹配多位元組字元的正規表示式 是指,通過使用 kcode進行設定,或顯式地使用漢字選項 請參考正規表示式字面值 等方式進行的匹配多位元組字元的正規表示式。行首。與字串的頭部或換行符...
ruby正規表示式
ruby中常會用到正規表示式。正規表示式是用來表達字串的模式 pattern 的。也可以這麼理解 我們使用正規表示式來表示某種搜尋規則,然後使用該正規表示式來完成字串的搜尋工作。舉個例子,假定有這樣的搜尋規則 字串以 foo 開始,以 r 結束 那麼就可以使用以下正規表示式來表示該規則。foo.r ...