特殊字符表
Python re模块
由于渲染问题下面表格的|使用I代替。
特殊字符 | 意义 | 示例 |
---|---|---|
. | 默认情况下匹配除了换行符以外的任何字符,在DOTALL模式下,可以匹配任意字符 | a.c |
^ | (Caret)插入符,匹配起始位置的字符串,在MULTILINE模式下,可以在换行后继续匹配。 | ^Hello |
$ | 匹配结束的字符串,也可用MULTILINE模式 | abc.$匹配abc1\n |
* | 匹配*前的字符0个或n个 | ab* 匹配’a’、’ab’、’a’或含有n个b的abbbb |
+ | 匹配一个或多个前面的字符。 | a+匹配ab和aaab,但与a*和a?不同的是, 模式a+不会匹配开始处没有’a’的字符串. |
? | 使得到的RE匹配前面RE的0或1次重复。 | ab? 将匹配’a’或’ab’。 |
{m} | 次数限定符,匹配出现对应次数的字符串。 | a{2} 匹配aa |
{m,n} | 次数区间限定符,同上。左右都闭区间。 | a{1,2} 匹配ab 中的‘a’,然而匹配aaaab 就只能匹配到前面两个a。 |
\ |
转义字符,用来匹配特殊字符。 | \. |
[ ] | ①表示一组字符;② ‘(‘, ‘+’, ‘*’, 或 ‘)’之类的特殊字符在[]里就失去意义了,只能表示字面意思。③^ 的意义改变成除……以外的其他字符 |
①[0-9A-Za-z]表示匹配所有的字符和数字;②[abc]匹配’a’,’b’或’c’ ③ [^^]表示除了^以外的所有字符,[^a]除a以外 |
AIB |
将一个或多个可选字符分隔开 | grayIgrey 匹配gray或grey,也可以写成gr(aIe)y |
(…) | 确定求值顺序,(?...) 特殊模式,不区分大小写和多行 |
(abc)+ 匹配abcabc666中的所有abc但不匹配ab或者bc等 |
\A |
只匹配开头的字符串 | |
\b |
在字符串的开头或结尾匹配空字符串 | |
\B |
匹配一个不再字符串开头或结尾的空字符串 | |
\d |
匹配一个数字 | |
\D |
匹配一个非数字 | |
\w |
匹配Unicode字符,任何语言的字符,包括数字下划线 | |
\W |
匹配不是单词字符的字符,相当于[^A-Za-z0-9_] |
|
\s |
对于Unicode字符,匹配空格,包括[ \t\n\r\f\v] ,对于8-bit字符串考虑有空格的字符 |
|
\S |
匹配不是空格的字符 |
贪婪模式
*, +, ?, {min,max}
默认情况下都是贪婪的(尽可能多匹配), 例如:<.*>
匹配<a> b <c>
会将整个字符串全部匹配。添加限定符?
后将解除这个模式<.*?>
将只匹配到<a>
。a{3,5}?
将只匹配aaaaaa
中的前3个。