目录
简介
以下是一个简单的举例:
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.findallre.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) |
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)