雖然現在各種高階語言基本都支援了正規表示式,但是貌似ruby卻表現的強烈而又靈活。
正規表示式是一種字串匹配的模式。可以用來乙個串中是否含有乙個子串;替換匹配的子串;或者取出匹配的子串等等。。。方便的文字操作!
在ruby中,建立正規表示式的方式通常是/pattern/或%r.
我們可以用
regexp
類來new
乙個正規表示式。
new的優點是可以通過字串來生成正規表示式。這有助於通過配置檔案來構造產生表示式。函式原型:
regexp.new(pattern [,options ])
pattern
是模式字串,
options
是可選的模式選項,是下面
3個常量的組合。
1.extended :
忽略空格和換行符
2 .ignorecase
:忽略大小寫
3 .
multiline
:把換行符當成普通字元對待。
瑣碎的東西:
特殊符號--
( )
標記乙個子表示式的開始和結束位置。
子表示式可以獲取供以後使匹配這些字元,請使用
\( 和 \)
。
範圍描述符
( 比如
,[a - z]
表示在a
到 z
範圍內的乙個字母
) ,
要匹配
使用\[
。 {}
標記限定符表示式。要匹配 。
例如,zo*
能匹配"z"
以及"zoo"
。要匹配
* 字元,請使用\*。
+
前面元素出現
1或多次。
+ 等價於。
例如,'zo+'
能匹配"zo"
以及"zoo"
, 但不能匹配
"z"。
要匹配+
字元,請使用\+。
?
前面元素最多出現1次
;相當於
。例如,
」do(es)?」
可以匹配
「do」
或「does」
中的"do"
。要匹配
? 字元,請使用\?。
n 是乙個非負整數。匹配確定的
n 次。
例如,'o'
不能匹配
"bob"
中的'o',
但是能匹配
"food"
中的兩o
。
n 是乙個非負整數。至少匹配
n 次。
'o'
等價於'o+'
。'o'
則等價於
'o*'
。 例如,
'o'
不能匹配
"bob"
中的'o'
,但能匹配
"foooood"
中的所有o。
m 和
n 均為非負整數,其中
n <= m
。前面元素最少出現n次
,最多現m
次。 'o'
等價於'o?'
。請注意在逗號和兩個數之間不能有空格
例如,"o"
將匹配"fooooood"
中的前三個o。
定位符:
用來描述字串或單詞的邊界,不能對定位符使用限定符。
^
匹配輸入字串的開始位置,除非在方括號表示式中使用,
此時它表示不接受該
字元集合。要匹配
^ 字元本身,請使用\^。
$匹配輸入字串的結尾位置。如果設定了
regexp
物件的multiline
屬性, 則$
也匹配'\n'
或'\r'
。要匹配
$ 字元本身,請使用\$。
\b
匹配乙個單詞邊界,也就是指單詞和空格間的位置。例如,
'er\b'
可以匹配
"never"
中的'er'
,但不能匹配
"verb"
中的'er'
。\b
匹配非單詞邊界。
'er\b'
能匹配"verb"
中的'er'
,但不能匹配
"never"
中的'er'
優先順序:
轉義符 --> 圓括號,方括號 ---> 限定符 --->定位符 -->或操作
常用操作符:
1. =~ 檢驗是否匹配,若匹配則返回匹配處的索引
!~ 檢驗不匹配,返回true或false(nil)
2. ~匹配$_並返回匹配處的索引。
3. match :返回匹配物件
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 代表任意數字...
ruby 正規表示式
ruby支援的正規表示式符號 元字元 有這麼個規則 不帶 的數字和字母不是元字元 帶 的符號也不是元字元 下文中出現的 匹配多位元組字元的正規表示式 是指,通過使用 kcode進行設定,或顯式地使用漢字選項 請參考正規表示式字面值 等方式進行的匹配多位元組字元的正規表示式。行首。與字串的頭部或換行符...