Python学习笔记(4)--正则表达式内置属性和分组的使用

来源:互联网 发布:java程序员怎么接私活 编辑:程序博客网 时间:2024/04/28 09:40

内置属性和分组的重要性不言而喻,直接步入正题吧。

1 正则表达式的内置属性:为匹配添加其他的匹配方法,使使用更加方便。

(1)re.I  忽略大小写。eg:

不使用re.I 时候:

import re   #导入re模块s1 = 'nihao's2 = 'nihao Nihao NIhao NIHAO'<span style="color:#663333;">s3 = re.findall(s1,s2)</span>print(s3)
打印结果是:['nihao']

使用re.I时:

import re   #导入re模块s1 = 'nihao's2 = 'nihao Nihao NIhao NIHAO's3 = re.findall(s1,s2,re.I)print(s3)
打印的结果是:['nihao', 'Nihao', 'NIhao', 'NIHAO']

(2)re.s 使.(点)匹配所有字符

import re   #导入re模块s1 = 'ni.ao's2 = 'nihao ni\nao NI\tao NIHAO's3 = re.findall(s1,s2,re.S)print(s3)
打印结果是:['nihao', 'ni\nao']

(3)re.M 呆匹配内容多行匹配

  re.X 正则表达式是多行  


2 正则表达式中利用()(括号)分组,可以将相关数据做整体且内部可以操作,其次findall()函数优先返回分组数据。

分组用法最典型的例子是邮箱匹配,邮箱最后可能是.com .cn .org .edu.cn 我们可以这样写

import re   #导入re模块s1 = '\w+@\w+(\.com|\.com\.cn|\.cn|edu.cn)'s2 = 'nibai@baidu.com's3 = re.findall(s1,s2)print(s3)
打印结果是:['.com']  有分组时,findall()返回的是分组的数据,多用于网络爬虫。

此时我们可以用match()进行匹配:

import re   #导入re模块s1 = '\w+@\w+(\.com|\.com\.cn|\.cn|edu.cn)'s2 = 'nibai@baidu.com's3 = re.match(s1,s2)if s3:    print(s3.group())else:    print('Nothing')
打印的结果为:nibai@baidu.com

0 0