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的全部数字
/[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" 不匹配
/^…$/ 匹配字符数为3的行 匹配字符数为3的行

5 使用反斜杠的模式

模式 含义
\s 空白符
\d 数字
\w 字母或数字
\A 字符串开头
\z 字符串行尾
\元字符 元字符本身
  • \s 表示空白符,匹配空格(0x20)、制表符(Tab)、换行符、换页符
模式 字符串 匹配结果
/ABC\sDEF/ “ABC DEF" >ABC DEF<
/ABC\sDEF/ “ABC\tDEF" >ABC\tDEF<
/ABC\sDEF/ “ABCDEF/ 不匹配
  • \d 表示匹配0到9的数字
模式 字符串 匹配结果
/\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 匹配英文字母与数字
模式 字符串 匹配结果
/\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" 不匹配
  • 元字符转义

可以用\对元字符进行转义,在\后添加^,$,[等非字母数字的元字符后,该元字符就不发挥作为元字符的功能,而是直接被作为元字符本身来匹配

模式 字符串 匹配结果
/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" 不匹配
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容