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