re正则模块的简单使用

re正则模块的简单使用,第1张

目录

简介

以下是一个简单的举例:

RE正则模块相关函数

re.match

re.search 

re.findall 

re.finditer 

re.sub

compile() 

 re正则匹配方法

特殊字符


简介

re正则模块是我们的python中用来匹配字符的。因为我们的python时常需要处理一些杂复杂的数据文件,我们需要使用re正则模块将我们所需要的数据从我们的文件中提取出来。

以下是一个简单的举例:

这里我们首先导入我们的re正则数据包,然后我们创建了一段字符串,我们想要匹配出我们字符串中的数字字符,我们就可以使用我们的re正则模块,将我们的匹配方法放入我们的reg中,其中\d的作用就是匹配字符串中的单个数字

将我们需要匹配的对象和匹配的法则传递给我们的re.findall函数,然后我们就能够找到我们想要匹配的内容。

import re
var='hello world4124'
reg='\d'
res=re.findall(reg,var)
print(res)

我们也可以使用迭代器的方法来生成我们的查询匹配的结果

import re
var='hello world4124'
reg='\d'
res=re.finditer(reg,var)
for i in res:
    print(i)

RE正则模块相关函数 re.match

re.match将我们的第一个参数放到第二个参数中去匹配,如果我们从头开始就匹配不到,那么就会返回None,如果匹配到了,就会返回匹配到的相关结果。

可以使用group()方法获得返回的数据

可以使用span()方法返回当前匹配的下标区间

以下是匹配成功的例子

import re
var='hello world4124'
b='hello'
a=re.match(b,var)
print(a)

 以下是匹配失败的例子

import re
var='hello world4124'
b='ello'
a=re.match(b,var)
print(a)

re.search 

从字符串开头到结尾进行搜索时匹配,匹配成功则返回match对象,否则返回none

可以使用group()方法获得返回的数据

可以使用span()方法返回当前匹配的下标区间

import re
var='hello world4124'
b='ello'
a=re.search(b,var)
print(a)

 

re.search的方法与re.match方法的区别在于re.search方法会从匹配对象的头一直匹配到尾,而match只会匹配头,如果头匹配不上,就不会再往后匹配。

re.findall 

re.findall()按照正则表达式的规则在字符串中所有匹配元素,结果返回一个列表,如果没有找到则返回空列表

import re
var='hello3131 world4124,4234dju82d'
b='\d'
a=re.findall(b,var)
print(a)

re.finditer 

按照正则表达式的规则在字符中匹配所有符合规则的元素,返回一个迭代器

import re
var='hello3131 world4124,4234dju82d'
b='\d'
a=re.finditer(b,var)
print(a)

re.sub

re.sub()搜索替换的功能,按照正则表达式的规则,在字符串中找到需要被替换的字符串,完成替换,参数:

pattern:正则表达式的规则,匹配需要被替换的字符串

repl:替换后的字符串

string:被替换的原始字符串

import re
var='hello3131 world4124,4234dju82d'
b='\d'
a=re.sub(b,'呵呵',var)
print(a)

 

compile() 

compile(),可以直接将正则表达式定义为正则对象,使用正则对象直接 *** 作下面的代码中,我们将我们的正则表达式直接定义为一个正则对象,当我们使用search方法时,我们就能够获得line每一行中的三个数字连在一起的部分。

import re

line=[
	'I love 512 you',
	'I love 512 you',
	'I love 512 you',
	'I love 512 you',
	'I love 512 you',
	'I love 512 you',
	'I love 512 you',
]

reg=re.compile('\d{3}')
#直接定义为一个正则对象
for i in line:
	res=reg.search(i).group()
	print(res)

 re正则匹配方法
\w代表单个字母、数字、下划线
\W代表单个非字母、数字、下划线
\d代表单个的数字
\D代表单个的非数字
\s代表单个的空格符或制表符
\S代表单个的非空格符或非制表符

可以组合使用上述表格中的匹配方法

在下面的代码中我们就是匹配四个字母、数字、下划线再加上单个数字的组合

import re
var='hello3131 world4124,4234dju82d'
b='\w\w\w\w\d'
a=re.findall(b,var)
print(a)

特殊字符

 . * + ? {} [] () ^ $

上述字符在下面的具体例子中进行解释

reg='.’

.点代表 单个的 任意字符 除了换行符\n之外

reg='\w*'

*代表匹配次数 任意次数 

reg='\w+'

+代表匹配次数 至少要求匹配一次

reg='\w+?'

?拒绝贪婪,就是前面的匹配规则只要达成则返回

reg='\w*?'

直接返回,因为*可以找到也可以找不到,而?达成要求就直接返回,所以根本就没有进行匹配

reg='\w{4}'

{}代表匹配次数,{4}一个数字时,必须匹配的次数

reg='\w{2,5}'

{}代表匹配次数,{2,5}两个数字时,必须匹配的区间次数

reg='[a-z,A-Z,0-9,_]'

[]代表字符的范围[a-z,A-Z,0-9,_]=='\w'

reg='\w+((\d{4})(\w+))'

()代表自组,括号中的表达式首先作为整个正则的一部分,另外会把符合小括号中的内容单独提取一份 

varstr='176101053211'

#定义一个匹配手机号的正则表达式

reg='^1\d{11}$'  #^代表开头  $代表结尾,这里的匹配是指对整个字符串进行匹配

a=re.match(reg,varstr)

print(a)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/916890.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存