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" | 不匹配 |