正则表达式总结
- 练习语言使用的是python
\n
表示换行,newline
\r
表示回车,return
\t
表示Tab
\0
表示空字符,none、NUll…
\s
表示所有空白字符
\f
表示换页字符,form-feed
单个字符
-
.
:除换行以外所有字符,匹配换行符以外的任何单个字符 -
[]
:匹配集合中任意一个字符,常用的[abk]、[a-k]、[a-zA-Z]
-
[abk]:匹配a字符或者b字符或者k字符
-
[^abk]:匹配任意字符,除了a字符或者b字符或者k字符
-
[a-k]:匹配a到k之间的任意字符,包括a字符和k字符
-
[^a-k]:匹配任意字符,处理那些a到k之间的字符
-
[a-zA-Z]:匹配a-z或者A-Z之间的任意字符,你可以随意组合
-
[^a-zA-Z]:匹配除了a-z或者A-Z之间的任意字符,可以是数字、换行符、空格等等
-
-
\d
:匹配任意的十进制数字(digit),相当于[0-9] -
\D
:匹配任意的非十进制的字符 -
\w
:匹配任意的字母(word)、数字、中文或者下划线,相当于[a-zA-Z0-9_] -
\W
:匹配字母、数字、中文或者下划线以外的任何内容 -
\s
:匹配所有空白字符包,包括空格、tab、换行符…,等价于[ \f\n\r\t\v] -
\S
:匹配所有非空白
数量修饰
a*
:匹配0个或者多个连续的a字符(>=0),例如a*表示字符串可以有0个a或者多个aa+
:匹配一个或者多个连续的a字符(>=1),即a*表示a字符至少出现一次a?
:匹配a字符或者不匹配任何字符,即a字符可有可无a{m}
:精确匹配m个连续的a字符,中间有任何空格都不可以a{m,}
:匹配至少m个连续的a字符a{m,n}
:匹配m个和n个连续的a字符,包含m和n,即m、m+1、…、n-1、n个连续的a字符都可以
边界
^a
:匹配任意一行的首字符必须是a,即任意一行以a字符开头a$
:匹配任意一行的结尾最后字符必须是a,即任意一行以a字符结尾
分组
(ab)
:匹配所有ab两个字符为一组,即ab为一组(a|b)
:匹配表达式中的a部分或者b部分
贪婪模式和惰性模式
-
a.*b
:贪婪模式,匹配a到b尽可能长的字符串,除了行终止符\n -
a.*?b
:惰性模式,匹配a到b尽可能短的字符串,匹配成功后,继续寻找下一个最短的“a到b”
Python中的正则
re.I
:忽略大小写,insensitive(不敏感)re.M
:多行匹配,multilinere.X
:忽略空格re.S
:单行匹配,该字符串可以认为是单行输入re.G
:匹配所有的符合条件的字符串,告诉引擎在找到第一个匹配项后不要停止,而是继续直到找不到更多匹配项为止re.sub(正则表达式, 替换内容, 字符串)