将《python核心编程》里面的正则表达式分享:
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.,”),姓氏没有什么限制,允许有多个单词、横线、大写字母。