正则表达式

目录

一、定义

1.re.match(匹配规则,被匹配字符串)

2.. search(匹配规则,被匹配字符串)

 3.findall(匹配规则,被匹配字符串)

 二、元字符匹配

一、定义

正则表达式,又称规则表达式(Regular Expression),是使用单个字符串来描述、匹配某个句法规则的字符串,常被用来检索、替换那些符合某个模式(规则)的文本。

简单来说,正则表达式就是使用:字符串定义规则,并通过规则去验证字符串是否匹配比如,验证一个字符串是否是符合条件的电子邮箱地址,只需要配置好正则规则即可。

比如通过正则规则:(^[\w-]+(L.[\w-]+)*@[ \w-]+(1.[\w-]+)+$)即可匹配一个字符串是否是标准邮箱格式

但如果不使用正则,使用if else来对字符串做判断就非常困难了。 但如果不使用正则,使用,如果不是来对字符串做判断就非常困难了。

Python正则表达式,使用re模块,并基于re模块中三个基础方法来做正则匹配。分别是: match、search、findall三个基础方法 Python正则表达式,使用re模块,并基于re模块中三个基础方法来做正则匹配。分别是:Match、Search、findall三个基础方法.

1.re.match(匹配规则,被匹配字符串)

从被匹配字符串开头进行匹配,匹配成功返回匹配对象(包含匹配的信息),匹配不成功返回空.

import re

s = 'python itheima python itheima python itheima'

result = re.Match('python',s)
print(result) # 
print(result.span()) #(0,6)
print(result.group()) #python
s = '1python itheima python itheima python itheima'
result=re.match('python',s)
print(result)  #结果为None,因为上面一条语句的意思是如果开头都不匹配,就不会再往下了

2.. search(匹配规则,被匹配字符串)

搜索整个字符串,找出匹配的。从前向后,找到第一个后,就停止,不会继续向后

import re

s = '1python itheima python itheima python itheima'

result = re.search('python',s)
print(result) 
print(result.span()) 
print(result.group()) 

正则表达式_第1张图片

整个字符串都找不到,返回None

import re

s = '163itheima'

result = re.search('python',s)
print(result)

 3.findall(匹配规则,被匹配字符串)

匹配整个字符串,找出全部匹配项

import re

s = '163itheima python3 python'

result = re.findall('python',s)
print(result)

正则表达式_第2张图片

 找不到返回空list: []

import re

s = '163itheima python3 python'

result = re.findall('pythons',s)
print(result)

正则表达式_第3张图片

 二、元字符匹配

在刚刚我们只是进行了基础的字符串匹配,正则最强大的功能在于元字符匹配规则。

单字符匹配:

正则表达式_第4张图片

正则表达式_第5张图片

 正则表达式_第6张图片

 案例:正则表达式_第7张图片

 

#匹配账号,只能由字母和数字组成,长度限制6到10位
import re

r='^[0-9a-zA-Z]{6,10}$'
s='1234567'
print(re.findall(r,s))
#这里需要知道s中长度超于10个或者小于6个,含有不是限制中的字符,得到的结果都是[]
#匹配QQ号.要求纯数字,长度5-11,第一位不为0
import re

r='^[1-9][0-9]{4,10}$'#第一位已经存在了[1-9],所以{4,10}
s='1234566'
print(re.findall(r,s))
#匹配邮箱地址,只允许qq、163、gmail这三种邮箱地址
#{内容}.{内容}.{内容}.{内容}.{内容}.{内容}.{内容}@.{内容}.{内容}.
import re

r=r'(^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+$)'#整体加括号是因为finall会输出括号的内容
#s='[email protected]'
s='[email protected]'
print(re.findall(r,s))

正则表达式_第8张图片

 

你可能感兴趣的:(Python,正则表达式)