re库的使用及正则表达式

常用正则表达式

from re import compile
percent = compile('([1-9]?[0-9]|100)%’)  # 百分比
date = compile(r'20\d{2}-(0[1-9]|1[012])-(0[1-9]|[12]\d|3[01])’)
time = compile("([01]\d|2[0-3]):([0-5]\d):([0-5]\d)")
weather = compile("(阴|晴|(浓?雾)|(多云)|霾|(浮尘)|(扬沙)|(强?沙尘暴)|(霜冻)|(冻雨)|(雨加雪)|(雨夹雪)|(冰雹)|(雷阵雨(并伴有冰雹)?)|((阵|小|中|大|暴|(特?大暴))(到(阵|小|中|大|暴|(大暴)))?(雨|雪)))(转.)*”)
temperature = compile("-?[1-9]?[0-9]{0,1}(.[1-9])?℃")

re库

注意事项

面向对象用法

regex = re.compile(pattern, flag=0)

result = regex.search(string)

推荐的字符类型

raw srting:忽视转义字符'\'的字符类型

简写为r'text'

匹配取向

默认为贪婪匹配,即匹配符合的最长字符串;在标识前一个字符能出现多次的表达式后加问号即可改为最小匹配。

match对象

属性

属性名称 内容
.string 待匹配的文本
.re 匹配所用的正则表达式
.pos 搜索范围的开始位置
.endpos 搜索范围的结束位置

 

方法

方法名 用途
.group() 获得每个表达式中括号对应的文本,0代表表达式整体
.start() 获得表达式对应文本的开始位置
.end() 获得表达式对应文本的结束位置
.span() (.start(), .end())

函数及常量

函数

函数 功能
re.search(pattern, string, flag=0) 返回符合pattern的子串的match对象
re.match(pattern, string, flag=0) 必须从串首起匹配,其余同search
re.finditer(pattern, string, flag=0) 返回符合子串的match对象的迭代器
re.findall(pattern, string, flag=0) 返回符合子串的列表
re.split(pattern, string, maxsplit=0, flag=0) 按pattern分割string并返回列表
re.sub(pattern, repl, string, count=0, flag=0) 将每个符合pattern的子串替换

常量

常量名 简写 功能
re.IGNORECASE re.I 忽略大小写
re.MULTILINE re.M 允许^匹配string中每行的开头
re.DOTALL re.S 允许.操作符匹配换行符

正则表达式

常用表达式

表达式 作用
. 对应一个任意字符
[] 对应一个其中字符
[^] 对应一个不在其中的字符
* 前一个字符出现0次或以上
+ 前一个字符出现1次或以上
? 前一个字符出现0次或1次
{m}

前一个字符出现m次

{m, n} 前一个字符出现m次到n次(含n次)
| 左字符串或右字符串
^ 匹配字符串头
$ 匹配字符串尾
()

分组标记,其中只支持|符号

\d 匹配所有数字
\w 匹配大小写字母、数字和下划线

匹配中文

[\u4e00-\u9fa5]

你可能感兴趣的:(Python,爬虫)