目录
1、re.match()函数和re.search()函数,实现字符串的正则匹配
3、re.compile() 函数,生成一个正则表达式( Pattern )对象
4、re.compile() 供 match() 和 search() 这两个函数的使用
6、re.finditer()使用,匹配的所有子串,迭代器返回
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。它能帮助你方便的检查一个字符串是否与某种模式匹配。最常见的邮箱规则模式:[a-zA-Z0-9_-]+@[a-zA-Z0-9]+(\.[a-zA-Z0-9]+),什么意思呢?做数据清洗的时候想查出一些特定的字符,批量替换一些指定的字符怎么做?...等等,在python中,这些都可以用正则表达式处理函数进行处理。
re 模块使 Python 语言拥有全部的正则表达式功能。使用前导入该模块:import re
常用的正则表达式处理函数。
1、re.match()函数和re.search()函数,实现字符串的正则匹配
match 和 search 只匹配一次,当正则表达式在字符串中匹配到多个结果时,在不指定全部返回的情况下,只返回最先匹配到的第一个结果。
- re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
- 函数语法:re.match(pattern, string, [flags])
- re.search 扫描整个字符串从任意位置匹配并返回第一个成功的匹配。
- 函数语法:re.search(pattern, string, [flags])
- re.match与re.search的区别:
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。所以实际应用往往使用re.search()函数。
参数:
- pattern:匹配的正则表达式(参考后面的正则表达式匹配模式附件)。
- string:要匹配的字符串。
- flags:标志位,用于控制正则表达式的匹配方式(参考后面的flags匹配模式模块)
结果获取:
- span():获取所匹配元素的起止位置
- start() :返回匹配开始的位置
- end() :返回匹配结束的位置
- group(num) / groups() :我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
group(num=0)
匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。 groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
re.match函数案例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import re
line = "This is a regular expression for python"
matchObj = re.match(r'(.*) is (.*?) .*', line, re.M | re.I)
if matchObj:
print("matchObj.span() :",matchObj.span())
print("matchObj.group() : ", matchObj.group())
print("matchObj.group(1) : ", matchObj.group(1))
print("matchObj.group(2) : ", matchObj.group(2))
print("matchObj.groups()) :", matchObj.groups())
else:
print("No match!!")
结果:
matchObj.span() : (0, 39)
matchObj.group() : This is a regular expression for python
matchObj.group(1) : This
matchObj.group(2) : a
matchObj.groups()) : ('This', 'a')
re.search函数案例:
#re.search()函数,扫描整个字符串从任意位置匹配并返回第一个成功的匹配。
line = "This is a regular expression for python"
searchObj = re.search(r"a (.*) for (p.*n$)",line,re.M | re.I)
print("searchObj.span() :",searchObj.span())
print("searchObj.group() : ", searchObj.group())#重点使用
print("searchObj.group(1) : ", searchObj.group(1))
print("searchObj.groups() : ", searchObj.groups())
输出:
searchObj.span() : (8, 39)
searchObj.group() : a regular expression for python
searchObj.group(1) : regular expression
searchObj.groups() : ('regular expression', 'python')
#re.mactch()函数和re.search()函数对比
import re
line = "This is a regular expression for python"
matchObj = re.match(r"python",line,re.M | re.I)
if matchObj:
print(matchObj.group())
else:
print("No match!!")
searchObj = re.search(r"python",line,re.M | re.I)
if searchObj:
print(searchObj.group())
else:
print("No search!!")
输出:
No match!!
python