Ruby on Rails 笔记2-正则表达式

Cookbook 4 正则表达式的模式与匹配

1 匹配普通字符

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

2 匹配行首与行尾

模式 字符串 匹配结果
/^ABC$/ “ABC" >ABC<
/^ABC$/ “ABCDEF" 不匹配
/^ABC$/ “123ABC" 不匹配
/^ABC/ “ABC" >ABC<
/^ABC/ “ABCDEF" >ABC
/^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
/[ABC]/ “123" 不匹配
/a[ABC]c/ “aBc" >aBc<
/a[ABC]c/ “1aBcDe" 1>aBc
/a[ABC]c/ “abc" 不匹配
/[^ABC]/ “1” >1<
/[^ABC]/ “A" 不匹配
/a[^ABC]c/ “aBcabc" >aBc
模式 字符串 匹配结果
/[ABC][AB]/ “AB" >AB<
/[ABC][AB]/ “AA" >AA<
/[ABC][AB]/ “CA" >CA<
/[ABC][AB]/ “CCCCA" CCC>CA<
/[ABC][AB]/ “xCBx" x>CB
/[ABC][AB]/ “CC" 不匹配
/[ABC][AB]/ “CxAx" 不匹配
/[ABC][AB]/ “C" 不匹配
/[0-9][A-Z]/ “0A" >0A<
/[0-9][A-Z]/ “000AAA" 00>0A
/[^A-Z][A-Z]/ “1A2B3C" >1A<2B3C
/[^0-9][^A-Z]/ “1A2B3C" 1>A2

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
/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
/\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" >
/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
/A.*C/ “ACDE" >AC
模式 字符串 匹配结果
/^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
模式 字符串 匹配结果
/^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" 不匹配

你可能感兴趣的:(Ruby on Rails 笔记2-正则表达式)