python中的正则表达式

一. 正则表达式

正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。

python中的正则表达式

1. 基本模式

.: 匹配任何字符

\w:匹配字母, 数字或者下划线

\W: 匹配非字母,数字,下划线

python中的正则表达式

\s: 匹配空格,如\n, \t,\r

\S: 匹配非空格字符

python中的正则表达式

\d: 匹配数字

\D: 除却数字之外的

python中的正则表达式

^: 开头

$: 结尾

\: 转义字符

2. 次数的匹配

*: 匹配前一个字符出现0次或多次, 即可有可无

+: 匹配前一个字符出现1次或多次,即至少出现一次

?: 匹配前一个字符出现1次或0次,即前面的字符可省略

python中的正则表达式

{n}: 匹配前一个字符出现n次

{n,}: 匹配前一个字符至少出现n次

{m,n}: 匹配前一个字符出现m次到n次

python中的正则表达式

eg1:匹配电话号码

python中的正则表达式

eg:匹配字符串

要求:字符串第一个字母为大写字母, 后面都是小写字母,且小写字母可有可无

python中的正则表达式

注:中括号用于指向一个字符集合,[A-Z],[a-z],[0-9],[0-9a-zA-Z]

eg3:匹配aa邮箱

要求:邮箱地址以@qq.com结尾;@qq.com前面的内容由字母,数字或者下划线组成,大于4小于15位;符合要求的存储到/tmp/mail.txt文件中

python中的正则表达式

3. 表示分组

| : 匹配 | 左右任意一个表达式即可

python中的正则表达式

eg:匹配0-100之间的数值,包含0和100

python中的正则表达式

(ab): 将括号中的字符作为一个分组

python中的正则表达式

注:groups以元组方式返回符合条件的分组

\num: 引用分组第num个匹配到的字符串

python中的正则表达式

(?P): 分组起别名

(?P=name) : 引用分组的别名

python中的正则表达式

???

二. re模块高级用法

search()方法: 只找到符和条件的第一个并返回

python中的正则表达式

findall()方法: 返回符合条件的所有内容

python中的正则表达式

sub()方法: 对符合正则的内容进行替换

eg1:

python中的正则表达式

eg2:

python中的正则表达式

split()方法: 指定多个分隔符进行分割

python中的正则表达式

三. python的贪婪匹配和非贪婪匹配

正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符

非贪婪匹配 总是匹配尽可能少的字符

*, ?,+, {m,n}后面加上?, 使得贪婪模式变成非贪婪模式

python中的正则表达式

四. JSON(javascript object)

python中的正则表达式

eg:获取输入IP的所在地理位置

python中的正则表达式