常用正则表达式
元字符 | 使用描述与例子 |
---|---|
\ | 转义字符,换行: \n 回车: \r 换页: \f 反斜杠: \\ 左括号 \( |
() | 标记子表达式的开始和结束位置, (ab) 与 (a)(b) 等价 |
^ | 匹配行首, ^ab 匹配 abcde 中的ab |
$ | 匹配行尾, de$ 匹配 abcde 中的de |
* | 匹配前面子表达式零次或多次, a(bb)* 匹配 abbba 中的a,abb ,不匹配abbb |
+ | 匹配前面子表达式一次或多次,a(bb)+ 匹配 abbba 中的abb ,不匹配 a,abbb |
? | 匹配前面的子表达式零次或一次,(fe)?male 匹配 female 中的female,male |
{n} | 精准匹配n次, mo{2} 匹配 moon中的o ,不匹配 mon中的 o |
{n,} | 匹配确定>n次, o{3,} 匹配zoooooo的o ,不匹配 zoo中的o |
{n,m} | 匹配确定次数∈[n,m], zo{1,3} 匹配zo , zoo , zooo ,对于zoooooo只匹配前3个o |
? | 非贪婪匹配. a+ 贪婪匹配字符串 “aaaaa”,得到 [aaaaa] , 而 a+? 非贪婪匹配得到 [a,a,a,a,a] |
. | 匹配除“\n”和"\r"之外的任何单个字符,用作任意字符 |
| | 两个匹配条件执行"or"运算, (cat|dog)food 匹配 catfood 或 dogfood |
(pat) | 匹配pat并获取匹配,模式 (a{2})|(b{2}) ,匹配aaabbb中的 aa 或 bb |
(?<=pat) | 向前匹配pat但不获取, (?<=cat)food 匹配catfood 中的 food |
(?=pat) | 向后匹配pat但不获取, cat(?=food) 匹配 catfood 中的 cat |
(?<!pat) | 向前否定匹配pat但不获取, (?<!cat)food 匹配dogfood 中的 food ,不匹配catfood中的 food |
(?!pat) | 向后否定匹配pat但不获取, cat(?!food) 匹配 catdrink 中的 cat,不匹配 catfood 中的 cat |
[xyz] | 匹配包含的任意一个字符, [abc] 匹配 man 中的 a , bad 中的 a,b |
[^xyz] | 匹配未包含的任意字符, [^abc] 匹配 a1b2c3 中的 [1,2,3] |
[a-z] [^a-z] | [a-z] 匹配字符a-z范围内任意小写字母, [^a-z] 匹配非小写字母的任意一个字符 |
\d \D | \d匹配0-9中的一个数字 ,\D匹配非0-9的任意一个字符 |
\s \S | \s匹配任何一个不可见的字符,包括空格、制表符、换页符等 , \S 匹配任何一个可见字符 |
\w \W | \w匹配含下划线的任何单词字符,\W匹配任何非单词字符 |
\num | 匹配num,num为正整数,对所获取的匹配引用num次, (.)\1 匹配两个连续的相同字符, (a)\1匹配baaaa 中的 aa |
其他
1.关于正则表达式在Python re模块中的使用例子,请参阅我的文章:
等我写完
2.关于正则表达式的更多使用例子,参阅我的另外一篇文章:
等我写完