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\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" |
不匹配 |
模式 |
字符串 |
匹配结果 |
/\AABC/ |
“ABC" |
>ABC< |
/\AABC/ |
“ABCDEF" |
>ABC<DEF |
/\AABC/ |
“012ABC" |
不匹配 |
/\AABC/ |
“012\nABC" |
不匹配 |
模式 |
字符串 |
匹配结果 |
/\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" |
不匹配 |