Ruby on Rails 筆記2-正則表達式

Cookbook 4 正則表達式的模式與匹配

1 匹配普通字符

模式 字符串 匹配結果
/ABC/ “ABC" >ABC<
/ABC/ “ABCDEF” >ABC<DEF
/ABC/ “123ABC" >ABC<
/ABC/ “A1B2C3" 不匹配
/ABC/ “AB" 不匹配
/AB/ “abc" 不匹配

2 匹配行首與行尾

模式 字符串 匹配結果
/^ABC$/ “ABC" >ABC<
/^ABC$/ “ABCDEF" 不匹配
/^ABC$/ “123ABC" 不匹配
/^ABC/ “ABC" >ABC<
/^ABC/ “ABCDEF" >ABC<DEF
/^ABC/ “123ABC" 不匹配
/ABC$/ “ABC” >ABC<
/ABC$/ “ABCDEF” 不匹配
/ABC$/ “123ABC” 123>ABC<

3 指定匹配字符的范圍

模式 含義
/[AB]/ A或B
/[ABC]/ A或B或C
/[CBA]/ A或B或C(與順序無關)
/[012ABC]/ 0、1湖蜕、2、A锁孟、B斤寂、C中的1個字符
/[A-Z]/ 從A到Z的全部大寫英文字母
/[a-z]/ 從a到z的全部小寫英文字母
/[0-9]/ 從0到9的全部數(shù)字
/[A-Za-z]/ 從A到Z與從a到z的全部英文字母
/[A-Za-z_]/ 全部英文字母與_
模式 字符串 匹配結果
/[ABC]/ “B" >B<
/[ABC]/ “BCD" >B<CD
/[ABC]/ “123" 不匹配
/a[ABC]c/ “aBc" >aBc<
/a[ABC]c/ “1aBcDe" 1>aBc<De
/a[ABC]c/ “abc" 不匹配
/[^ABC]/ “1” >1<
/[^ABC]/ “A" 不匹配
/a[^ABC]c/ “aBcabc" >aBc<abc
模式 字符串 匹配結果
/[ABC][AB]/ “AB" >AB<
/[ABC][AB]/ “AA" >AA<
/[ABC][AB]/ “CA" >CA<
/[ABC][AB]/ “CCCCA" CCC>CA<
/[ABC][AB]/ “xCBx" x>CB<x
/[ABC][AB]/ “CC" 不匹配
/[ABC][AB]/ “CxAx" 不匹配
/[ABC][AB]/ “C" 不匹配
/[0-9][A-Z]/ “0A" >0A<
/[0-9][A-Z]/ “000AAA" 00>0A<AA
/[^A-Z][A-Z]/ “1A2B3C" >1A<2B3C
/[^0-9][^A-Z]/ “1A2B3C" 1>A2<B3C

4 匹配任意字符

模式 字符串 匹配結果
/A.C/ “ABC" >ABC<
/A.C/ “AxC" >AxC<
/A.C/ “012A3C456" 012>A3C<456
/A.C/ “AC" 不匹配
/A.C/ “ABBC" 不匹配
/A.C/ “abc" 不匹配
/aaa…/ “00aaabcde" 00>aaabcd<e
/aaa…/ “aaabb" 不匹配
/^…$/ 匹配字符數(shù)為3的行 匹配字符數(shù)為3的行

5 使用反斜杠的模式

模式 含義
\s 空白符
\d 數(shù)字
\w 字母或數(shù)字
\A 字符串開頭
\z 字符串行尾
\元字符 元字符本身
  • \s 表示空白符林螃,匹配空格(0x20)允耿、制表符(Tab)借笙、換行符、換頁符
模式 字符串 匹配結果
/ABC\sDEF/ “ABC DEF" >ABC DEF<
/ABC\sDEF/ “ABC\tDEF" >ABC\tDEF<
/ABC\sDEF/ “ABCDEF/ 不匹配
  • \d 表示匹配0到9的數(shù)字
模式 字符串 匹配結果
/\d\d\d-\d\d\d\d/ “012-3456” >012-3456<
/\d\d\d-\d\d\d\d/ “01234–12345" 01>234-1234<5
/\d\d\d-\d\d\d\d/ “ABC-DEFG" 不匹配
/\d\d\d-\d\d\d\d/ “012-21" 不匹配
  • \w 匹配英文字母與數(shù)字
模式 字符串 匹配結果
/\AABC/ “ABC" >ABC<
/\AABC/ “ABCDEF" >ABC<DEF
/\AABC/ “012ABC" 不匹配
/\AABC/ “012\nABC" 不匹配
  • \A 匹配字符串的開頭
模式 字符串 匹配結果
/\w\w\w/ “ABC" >ABC<
/\w\w\w/ “abc" >abc<
/\w\w\w/ “012" >012<
/\w\w\w/ “AB C" 不匹配
/\w\w\w/ “AB\nC" 不匹配

*\z 匹配字符串的末尾

模式 字符串 匹配結果
/ABC\z/ “ABC" >ABC<
/ABC\z/ “012ABC" 012>ABC<
/ABC\z/ “ABCDEF" 不匹配
/ABC\z/ “012/nABC" 012/n>ABC<
/ABC\z/ “ABC/nDEF" 不匹配
  • 元字符轉義

可以用\對元字符進行轉義较锡,在\后添加^,$,[等非字母數(shù)字的元字符后业稼,該元字符就不發(fā)揮作為元字符的功能,而是直接被作為元字符本身來匹配

模式 字符串 匹配結果
/ABC[/ “ABC[" >ABC[<
/\^ABC/ “ABC" 不匹配
/\^ABC/ “012^ABC" 012>^ABC<

6 重復

模式 含義
* 重復0次以上
+ 重復1次以上
? 重復0次或1次
模式 字符串 匹配結果
/A*/ “A" >A<
/A*/ “AAAAAA" >AAAAAA<
/A*/ “" ><
/A*/ “BBB" ><BBB
/A*C/ “AAAC" >AAAC<
/A*C/ “BC" B>C<
/A*C/ “AAAB" 不匹配
/AAA*C/ “AAC" >AAC<
/AAA*C/ “AC" 不匹配
/A.*C/ “AB012C" >AB012C<
/A.*C/ “AB CD" >AB C<D
/A.*C/ “ACDE" >AC<DE
模式 字符串 匹配結果
/^Subject:\s.$/ “Subject: foo" >Subject: foo<
/^Subject:\s.$/ “Subject: Re: foo" >Subject: Re: foo<
/^Subject:\s.$/ “Subject:Re^2 foo" >Subject:Re^2 foo<
/^Subject:\s.$/ “in Subject:Re foo" 不匹配
模式 字符串 匹配結果
/A+/ “A" >A<
/A+/ “AAAAAA" >AAAAAA<
/A+/ “" 不匹配
/A+/ “BBB" 不匹配
/A+C/ “AAAC" >AAAC<
/A+C/ “BC" 不匹配
/A+C/ “AAAB" 不匹配
/AAA+C/ “AAC" 不匹配
/AAA+C/ “AC" 不匹配
/A.+C/ "AB012C" >AB012C<
/A.+C/ “AB CD" >AB C<D
模式 字符串 匹配結果
/^A?$/ “A" >A<
/^A?$/ “" “"
/^A?$/ “AAAAAA" 不匹配
/^A?C/ “AC" >AC<
/^A?C/ “AAAC" 不匹配
/^A?C/ “BC"
/^A?C/ “C"
/AAA?C/ “AAAC"
/AAA?C/ “AAC"
/AAA?C/ “AC"
/A.?C/ “ACDE"
/A.?C/ “ABCDE"
/A.?C/ “AB012C"
/A.?C/ “AB CD"
/A.+C/ “ACDE" 不匹配
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末蚂蕴,一起剝皮案震驚了整個濱河市低散,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌骡楼,老刑警劉巖熔号,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鸟整,居然都是意外死亡跨嘉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祠乃,“玉大人,你說我怎么就攤上這事兑燥×链桑” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵降瞳,是天一觀的道長嘱支。 經常有香客問我,道長挣饥,這世上最難降的妖魔是什么除师? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮扔枫,結果婚禮上汛聚,老公的妹妹穿的比我還像新娘。我一直安慰自己短荐,他們只是感情好倚舀,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忍宋,像睡著了一般痕貌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上糠排,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天舵稠,我揣著相機與錄音,去河邊找鬼入宦。 笑死哺徊,一個胖子當著我的面吹牛,可吹牛的內容都是我干的云石。 我是一名探鬼主播唉工,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼汹忠!你這毒婦竟也來了淋硝?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤宽菜,失蹤者是張志新(化名)和其女友劉穎谣膳,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铅乡,經...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡继谚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了阵幸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片花履。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡芽世,死狀恐怖,靈堂內的尸體忽然破棺而出诡壁,到底是詐尸還是另有隱情济瓢,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布妹卿,位于F島的核電站旺矾,受9級特大地震影響,放射性物質發(fā)生泄漏夺克。R本人自食惡果不足惜箕宙,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铺纽。 院中可真熱鬧柬帕,春花似錦、人聲如沸室囊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽融撞。三九已至盼铁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尝偎,已是汗流浹背饶火。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留致扯,地道東北人肤寝。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像抖僵,于是被迫代替她去往敵國和親鲤看。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內容