机器学习程序员大数据 爬虫Python AI Sql

小猪的Python学习之旅 —— 3.正则表达式

2017-12-27  本文已影响174人  coder_pig

re模块

Python中通过re模块使用正则表达式,该模块提供的几个常用方法:

1.匹配

re.match(pattern, string, flags=0)

re.search(pattern, string, flags=0)

注意match方法和search的最大区别:match如果开头就不和正则表达式匹配,
直接返回None,而search则是匹配整个字符串!!

2.检索与替换

re.findall(pattern, string, flags=0)

re.finditer(pattern, string, flags=0)

re.sub(pattern, repl, string, count=0, flags=0)

re.split(pattern, string, maxsplit=0, flags=0)

3.编译成Pattern对象

对于会多次用到的正则表达式,我们可以调用re的compile()方法编译成
Pattern对象,调用的时候直接Pattern对象.xxx即可,从而提高运行效率。

附:flags(可选标志位)表

多个标志可通过按位OR(|)进行连接,比如:re.I|re.M

修饰符 描述
re.I 使匹配对大小写不敏感
re.L 做本地化识别(locale-aware)匹配
re.M 多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括换行在内的所有字符
re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

2.正则规则详解


1.加在正则字符串前的'r'

为了告诉编译器这个string是个raw string(原字符串),不要转义反斜杠
比如在raw string里\n是两个字符,''和'n',不是换行!

2.字符

字符 作用
. 匹配任意一个字符(除了\n)
[] 匹配[]中列举的字符
[^...] 匹配不在[]中列举的字符
\d 匹配数字,0到9
\D 匹配非数字
\s 匹配空白,就是空格和tab
\S 匹配非空白
\w 匹配字母数字或下划线字符,a-z,A-Z,0-9,_
\W 匹配非字母数字或下划线字符
- 匹配范围,比如[a-f]

3.数量

字符 作用(前面三个做了优化,速度会更快,尽量优先用前三个)
* 前面的字符出现了0次或无限次,即可有可无
+ 前面的字符出现了1次或无限次,即最少一次
? 前面的字符出现了0次或者1次,要么不出现,要么只出现一次
{m} 前一个字符出现m次
{m,} 前一个字符至少出现m次
{m,n} 前一个字符出现m到n次

4.边界

字符 作用
^ 字符串开头
$ 字符串结尾
\b 单词边界,即单词和空格间的位置,比如'er\b'
可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'
\B 非单词边界,和上面的\b相反
\A 匹配字符串的开始位置
\Z 匹配字符串的结束位置

5.分组

()表示的就是要提取的分组,一般用于提取子串,
比如:^(\d{3})-(\d{3,8})$:从匹配的字符串中提取出区号和本地号码

字符 作用

验证通过后回复 加群 即可获得加群链接(不要把机器人玩坏了!!!)~~~
欢迎各种像我一样的Py初学者,Py大神加入,一起愉快地交流学♂习,van♂转py。


上一篇 下一篇