小伙伴们,大家好久不见,最近一直有事,博客也没更新。好了,相信大家都在为在一大堆数据中寻找几个字符头疼过。下面这个方法相信能解决很多人的困扰。好了,让我们一起来了解正则表达式的强大。
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。
re 模块使 Python 语言拥有全部的正则表达式功能。
compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。
re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
语法如下:
re.compile(pattern[, flags])
参数介绍:
pattern_obj1=re.compile('(\d+(\w+))')
# 根据一个选择标准,返回一个对象
# compile:编译
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
函数语法:
re.match(pattern, string, flags=0)
函数参数说明:
参数 | 描述 |
---|---|
pattern | 匹配的正则表达式 |
string | 要匹配的字符串。 |
flags | 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志 |
匹配成功re.match方法返回一个匹配的对象,否则返回None。
我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
匹配对象方法 | 描述 |
---|---|
group(num=0) | 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。 |
groups() | 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。 |
例子:
pattern_obj1=re.compile('(\d+(\w+))')
# 根据一个选择标准,返回一个对象
# compile:编译
# match 匹配
res1 = re.match(pattern_obj1,'12345abcd100啦')
# 判断res1是否有值
if res1:
print(res1)
print('找到了 %s | %s'%(res1.group(1),res1.group(2)))
else:
print('没有匹配到')
re.search函数是匹配整个字符串,返回匹配成功的第一个值
函数语法:
re.search(pattern, string, flags=0)
函数参数说明:
参数 | 描述 |
---|---|
pattern | 匹配的正则表达式 |
string | 要匹配的字符串。 |
flags | 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志 |
例子:
import re
pattern = re.compile('my')
# match从开始位置匹配函数
# 仅限于开头位置,匹配成功返回match对象,没有皮皮成功返回None
res1 = re.match(pattern,'mydsdasdshop')
print(res1)
# search搜索
# search可以从任何位置匹配
# 匹配成功一次就返回,如果有多个,也只能返回一个
res2 = re.search(pattern,'asdadmyshopmy')
print(res2)
# findall:搜索整个目标字符串,可以提取多个值
res3 = re.findall(pattern,'sdsadmysdsmy')
print(res3)
re.sub函数是用来替换匹配的值的,就是把匹配成功的值换成你想要的值
语法说明:
re.sub(pattern, repl, string, count=0)
参数说明:
例子:
pattern3 = re.compile('\n')
print(re.sub(pattern3,'-','a\nb\nc'))