Python 正则表达式笔记(一)

来源:互联网 发布:js变量为undefined 编辑:程序博客网 时间:2024/05/21 22:25

自从学习Python以来,正则表达式已经在很多地方经常使用了,特别是对于文本处理,以及网络爬虫上。如今对于Python的正则表达式进行整理,方便以后查阅。在Lunix系统中对于正则表达式也有着广泛的运用。
1.python的re模块
python的re模块是自带的,并不需要额外的安装。对于正则表达式的匹配模式是匹配正则表达式对象(Regex对象)。
1.1 创建正则表达式对象:
使用re.compile(匹配字符串模式)
例如:
numberRegex=re.compile(r’\d*’)
1.2 对于Regex对象使用search方法
Regex对象的search方法返回一个Match对象
Mo=numberRegex.search(待匹配的文本)
1.3 使用Match对象的group()方法获取匹配的文本
Mo.group()
1.3.1 使用括号进行分组
(\d\d\d)-(\d\d\d-\d\d\d)
其中前一个括号内的内容为group(1),后一个括号内容为group(2),一次性获取所有的分组,可以使用groups()方法。
1.4 使用管道匹配多个分组
re.compile(r’A|B’)
这里的“|”被我们称之为管道,表示或的意思
1.5 使用问号实现可选匹配
re.complie(r’Bat(wo)?man’)
1.6 使用星号*匹配零次或多次
1.7 使用花括号{}匹配待定次数
1.8 使用Regex对象的findall()方法返回字符串的列表
numberRegex.findall(‘待匹配的文本’)

2.贪心匹配与非贪心匹配
2.1 Python默认的贪心匹配
在表示存在二义的情况下,python会尽可能的匹配最长的字符串。
2.2 使用“?”来实现非贪心匹配

3.字符分类:
3.1 常用的一些缩写字符
\d 0~9任何数字
\D 除0~9数字以外的任何字符
\w 任何字母,数字或者下划线字符
\W 除字母,数字或者下划线以外的字符
\s 空格,制表符或者换行符
\S 除空格,制表符和换行符以外的字符
3.2 定义自己的字符分类“[ ]”
将会匹配方括号内的任意字符,注意,此时方括号内的普通的正则表达式不会被解释,方括号里面的内容直接匹配出来的话都是单个的字符。
[^”文本”]在左括号的后面加上^表示除文本之外
3.3 插入字符^与美元字符表示以待匹配的正则表达式内容结尾
一般用于检测文本的开头与结尾,返回的是True 或者 False
3.4 通配字符”.”
3.4.1 可以匹配除了换行符以外的任意字符
3.4.2 使用(.*)匹配所有的字符
3.4.3 使用句点符匹配换行符
通过传入re.DATALL作为re.compile()的第二个参数,可以让句点字符匹配换行
例如:
newlineRegex = re.compile(‘.*’,re.DATALL)
newlineRegex.search(‘Serve the public trust .\nProtect the innocent.’).group()
‘Serve the public trust .\nProtect the innocent.’
3.5 不区分大小写的匹配
向re.compile()传入re.IGNORECASE或者re.I作为第二个参数
3.6 用sub()方法替换字符串
替换方法有两种
(1) Regex.sub(“想要替换成的字符串”,”需要被替换的字符串”)
(2) re.sub(“正则表达式”,”想要替换成的字符串”,”需要被替换的字符串”)

4.复杂的正则表达式
4.1 匹配复杂的文本模式,可能需要很长的费解的正则表达式,可以告诉正则表达式忽略正则表达式字符串中的空白符和注释,需要向re.compile()传入变量re.VERBOSE作为第二个参数
例如:
phoneRegex=re.compile(r”’(
(\d{3}|(\d{3}))? #area code
(\s[-].)? #separator
\d{3}
(\s|-|.)
\d{4}
(\s*(ext|x|ext.)\s*\d{2,5})?
)
5.常见的一些匹配:
匹配中文:u”#[\w\u2E80-\u9FFF]+#”

原创粉丝点击