Python 正则表达式


将《Python核心编程》里面的正则表达式分享:

《Python核心编程》第二版中文高清PDF下载


1、用管道符号( | )匹配多个正则表达式模式

2、匹配任意一个单个的字符( . )

正表达式模式         匹配的字符串
f.o                在"f"和"o"中间的任何字符,如fao, f9o, f#o 等
..                  任意两个字符
.end            匹配在字符串end 前面的任意一个字符

3、从字符串的开头或结尾或单词边界开始匹配( ^/$ /\b /\B )

正则表达式模式         匹配的字符串
^From                   匹配任何以From 开始的字符串
/bin/tcsh$             匹配任何以 /bin/tcsh 结束的字符串
^Subject: hi$        匹配仅由 Subject: hi 组成的字符串


RE                    Pattern Strings Matched
the                   任何包含有"the"的字符串
\bthe               任何以"the"开始的字符串
\bthe\b           仅匹配单词 “the”
\Bthe              任意包含“the”但不以“the”开头的单词

4、创建字符类( [ ] )
正则表达式模式                         匹配的字符串
b[aeiu]t                                      bat, bet, bit, but
[cr][23][dp][o2]                         一个包含4 个字符的字符串: 第一个字符是 “r” 或 “c”,后面是 “2”
                                                  或 “3”,再接下来是 “d” 或 “p”,最后是 “o” 或 “2“ ,例
                                                  如:c2do, r3p2, r2d2, c3po, 等等。

5、指定范围 ( - ) 和 否定( ^ )

正则表达式模式                       匹配的字符
z.[0-9]                                       字符"z",后面跟任意一个字符,然后是一个十进制数字
[r-u][env-y][us]                         “r” “s,” “t” 或 “u” 中的任意一个字符,后面跟的是 “e,”
                                                 “n,” “v,” “w,” “x,” 或 “y”中的任意一个字符,再后面
                                                   是字符“u” 或 “s”.
[^aeiou]                                    一个非元音字符 (练习: 为什么我们说”非元音“, 而不说”辅
                                                   音字母“?)
[^\t\n]                                        除TAB 制表符和换行符以外的任意一个字符
["-a]                                          在使用ASCII 字符集的系统中,顺序值在‘"‘ 和 “a”之间 的
                                                 任意一个字符,即,顺序号在34 和97 之间的某一个字符。

6、使用闭包操作符 ( *, +, ?, {} ) 实现多次出现/重复匹配

RE Pattern                              Strings Matched
[dn]ot?                                     字符"d"或"o", 后面是一个"o", 最后是最多一个字符"t",即,do, no, dot,
                                                 not
0?[1-9]                                     从1 到9 中的任意一位数字,前面可能还有一个"0". 例如:可以把它看
                                                成一月到九月的数字表示形式,不管是一位数字还是两位数字的表示形式。
[0-9]{15,16}                           15 或16 位数字表示,例如:信用卡号码
</?[^>]+>                                 匹配所有合法(和无效的)HTML 标签的字符串
[KQRBNP][a-h][1-8]-[a-h][1-8]                                     在“长代数”记谱法中,表示的国际象棋合法的棋盘。即, “K,” “Q,” “R,” “B,” “N,” 或 “P” 等
                                                                                        字母后面加上两个用连字符连在一起的"a1"到"h8"之间的棋盘坐标。前面的编号表示从哪里开始走棋,后面的
                                                                                         编号代表走到哪个位置(棋格)去。

7、特殊字符表示字符集

正则表达式模式                                                  匹配的字符串
\w+-\d+                                                                一个由字母或数字组成的字符串,和至少一个数字,两部分中间由连字符连接
[A-Za-z]\w*                                                         第一个字符是字母,其余字符(如果存在的话),是字母或数字(它几乎等价于Python 语言中合法的标识符[见参考练习])
\d{3}-\d{3}-\d{4}                                                (美国)电话号码,前面带区号前缀,例如 800-555-1212
\w+@\w+\.com                                                 简单的XXX@YYY.com 格式的电子邮件地址

8、用圆括号(()) 组建组

正则表达式模式                                                匹配的字符串
\d+(\.\d*)?                                                          表示简单的浮点数,即, 任意个十进制数字,后面跟一个可选的小
                                                                           数点,然后再接零或多个十进制数字。例如:“0.004,” “2,” “75.”,等等。
(Mr?s?\. )?[A-Z][a-z]* [ A-Za-z-]+                   名字和姓氏,对名字的限制(首字母大写,其它字母(如果存在)小写), 全名前有可选的称谓(“Mr.,”
                                                                          “Mrs.,” “Ms.,” 或 “M.,”),姓氏没有什么限制,允许有多个单词、横线、大写字母。

相关内容