安全开发2 分钟阅读
Python 正则表达式
速查 匹配次数 常用语法 常用功能 创建正则表达式对象 #根据包含正则表达式的字符串创建模式对象 全文查找符合表达式的对象 从头开始查找符合表达式的对象 分割字符串 寻找所有符合表达式的对象 替换字符串 注意 表 示 字 符 串 的 结 尾 , 所 以 加 上 表示字符串的结尾,所以加上 表示字符…
Read in English→Python 正则表达式
速查
import sys
import re
reload(sys)
sys.setdefaultencoding('utf-8')
匹配次数
. 匹配任意字符一次
* 匹配前面的表达式0/n次
+ 匹配前面的表达式1/n次
? 匹配前面的表达式0/1次
{m} 匹配前面的表达式m次
{m,n} 匹配前面的表达式m到n次
*? 匹配前面的表达式0次
+? 匹配前面的表达式1次
常用语法
re.S 匹配所有的字符
re.I 匹配大小写
re.M 多行匹配
re.match从头开始匹配
re.search全文匹配
\d 匹配所有的数字
\D 匹配所有的非数字
\s 匹配所有的文字
\S 匹配所有的非文本
[] 字符集合,匹配里面的所有表达式,使用|分开
常用功能
创建正则表达式对象
compile(pattern[, flags])
#根据包含正则表达式的字符串创建模式对象
全文查找符合表达式的对象
search(pattern, string[, flags])
#在字符串中查找,只查找一个
从头开始查找符合表达式的对象
match(pattern, string[, flags])
#在字符串的开始处匹配模式
分割字符串
split(pattern, string[, maxsplit=0,flags])
#根据模式的匹配项来分割字符串
寻找所有符合表达式的对象
findall(pattern, string,flags)
#列出字符串中模式的所有匹配项
return 数组
替换字符串
sub(pat,repl, string[,count=0,flags])
#将字符串中所有的pat的匹配项用repl替换
注意 表 示 字 符 串 的 结 尾 , 所 以 加 上 表示字符串的结尾,所以加上 表示字符串的结尾,所以加上表示匹配的内容必须在字符串的结尾
匹配整个字符串还要加上字符串开始标记^
注意写爬出的时候可以用正则表达式匹配多个对象,然后遍历的时候使用yield生成器,可以组合成字典的形式,然后把字典给json.dumps()转换成json的格式,最后保存在本地文本中。
常规匹配的正则语法
汉字:[\u4e00-\u9fa5]{0,}
英文和数字:[A-Za-z0-9]+
长度为3-20的所有字符:.{3,20}
Email地址:\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*
域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
InternetURL:[a-zA-z]+://[^\s] 或 ^http://([\w-]+.)+[\w-]+(/[\w-./?%&=])?$
手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}(0511-4405222、021-87888822)
日期格式:^\d{4}-\d{1,2}-\d{1,2}
空白行的正则表达式:\n\s*\r (可以用来删除空白行)
腾讯QQ号:[1-9][0-9]{4,}
IP地址提取:\d+.\d+.\d+.\d+