Python中的正则表达式常用函数
1.大批量文本的解析最好提前编译正则表达式
# 正则re模块的compile函数方法可以返回一个正则表达式的对象,方便大批量的文本匹配,节省计算机资源
q = re.compile(r'src="(.*)" width')
# 将上面的正则表达式对象方法调用出来可以返回出匹配出的对象
#findall方法返回一个列表对象,是所有符合条件的匹配项,如果正则表达式有括号的话那么将会返回的是正则表达式里面括号匹配的字符串,传递的正则表达式没有括号的话将会返回出整个正则表达式匹配的字符串组成的列表
e = q.findall(b)
2.小批量的匹配的话可以直接调用re的方法传递正则表达式来匹配
import re
re.search(test_pattern, test_str)
# re.search 扫描整个字符串并返回第一个成功的匹配对象,如果整个字符串匹配完一个都没找到则返回None
如下
test_str = 'www.runoob.com.wwww'
test_pattern = 'w*'
search_ret = re.search(test_pattern, test_str)
print(type(search_ret))
# <class 're.Match'>
print(search_ret)
# <re.Match object; span=(0, 3), match='www'>
print(search_ret.string)
# www.runoob.com
print(search_ret.group(0))
# www
print(search_ret.group(1))
# IndexError: no such group
=============================================================
re.match('com', 'www.runoob.com')
#这里的match方法是意思从这个目标字符串中的第一个字符开始匹配,匹配出来就返回匹配的对象,匹配不出来的话他会返回None
=============================================================
# 替换方法,参数依次是前,后,要处理的文本对象,返回值直接就是处理过的文本对象,直接打印
num = re.sub(r'#.*$', "", phone))
================================================================
group()方法
#group方法是search或者match等方法返回出的re对象的方法,由这些对象直接调用
# 处理一般需要用到group方法,注意这里的group方法使用默认参数的话等价于
# group(0),group(0)返回的整个匹配到的 文本(也就是整个正则表达式匹配的文
# 本包含正则表达式括号外面的和括号里面的),而如果是group(n)其中n非零的话
# 返回的就是第几个()中的正则匹配出来的文本 如下
searchObj.group()
# 匹配符没有括号情况
test_str = 'www.runoob.com.wwww'
test_pattern = 'w*'
search_ret = re.search(test_pattern, test_str)
print(search_ret.group(0))
# www
print(search_ret.group(1))
# IndexError: no such group
# 匹配符有括号情况1
test_str = 'www.runoob.com.wwww'
test_pattern = '(w*).ru'
search_ret = re.search(test_pattern, test_str)
print(search_ret.group(0))
# www.ru
print(search_ret.group(1))
# www
# 匹配符有括号情况2
test_str = 'www.runoob.com.wwww'
test_pattern = '(w*)'
search_ret = re.search(test_pattern, test_str)
print(search_ret.group(0))
# www
print(search_ret.group(1))
# www
===========================================================================
# re.findall()方法 会返回所有的符合条件的匹配出来的结果字符串组合的 “”“列表”“”
re.findall()
# 不带括号
test_str = 'www.runoob.com.wwww'
test_pattern = 'w+.run'
search_ret = re.findall(test_pattern, test_str)
print(search_ret)
# ['www.run']
# 带括号1
test_str = 'www.runoob.com.wwww'
test_pattern = '(w+)'
search_ret = re.findall(test_pattern, test_str)
print(search_ret)
# ['www', 'wwww']
# 带括号2
test_str = 'www.runoob.com.wwww'
test_pattern = '(w+).run'
search_ret = re.findall(test_pattern, test_str)
print(search_ret)
# ['www']