python的正则表达式
正则表达式是一个特殊的字符序列,他能帮助你方便的检查一个字符串是否与某种模式匹配。python自1.5版本起增加了re模块。他提供perl风格的正则表达式。
re模块使python语言拥有全部正则表达式功能。
compile函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。
re模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做他们的第一参数。
正则表达式元字符
字符匹配
普通字符
大多数字母和字符哟般都会和自身匹配。
如正则表达式test会和字符串test完全匹配。
[]
常用来指定一个字符集:[abc];[a-z]
元字符在字符集中不起作用:[abd$]
补集匹配不在区间范围内的字符[^5]
^
匹配行首。除非设置MULTILINE标志,他只是匹配字符串的开始。
在MULTILINE模式里,他也可以直接匹配字符串的每个换行。
$
匹配行尾。行尾被定义为要么字符串行尾,要么是一个换行字符后面的任何位置。
\
把元字符转换为普通符号的时候用\来转移
元字符
\d代表所有数字0*-9
\D代表匹配非数字字符除了0-9
\s匹配任何空字符:他相当于[\t\tn\r\f\v]
\S匹配任何非空白字符:他相当于类[^\t\n\f\r\v]取反
\w匹配任何字母数字字符;相当于[a-zA-z0-9]
\W匹配任何非数字字母;相当于[^a-zA-z0-9]取反
正则特性
重复
正则表达式第一功能是能够匹配不定长的字符集,另一个功能就是你可以指定正则表达的一部分重复次数
指定前一个字符可以被匹配零次或更多次,而不是只有一次。匹配引擎会试着重复
尽可能多的次数,(不超过整数界定范围,20亿)
.
匹配任意字符
+
*至少匹配一次或者多次。
/?
匹配一次或零次
使用正则表达式
re模块提供了一个正则表达式引擎接口,可以让你将restring编译成对象并用它们进行匹配。
编译正则表达式
re.compile()也可以接受一些可选的标志参数,常用来实现不同的特殊功能和语法变更
执行匹配
match()决定re是否在字符串刚开始的位置匹配
search()扫描字符串,找到这个re匹配的位置
findall()找到re匹配的所有字符串,并把他们作为一个列表返回
finditer()找到re匹配的所有字符串,并把它作为一个迭代器返回
如果没有匹配到的话,macth()和search()返回none
如果返回成功的话,就会返回一个’match object’
爬取一个静态网页并写入c盘的一个文件