正则表达式的应用

1、正则表达式的概念

正则表达式:又称规则表达式(英语:Regular Expression.在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式的文本。

2、匹配单个字符

字符功能
.匹配任意一个字符(除了\n)
[ ]匹配[ ]中列举的字符
\d匹配数字,即 0-9
\D匹配非数字
\s匹配空白,即空格,\t ,\n
\S匹配非空白
\w匹配单词字符即a-z、A-Z、0-9、_
\W匹配非单词字符

3、匹配多个字符

字符功能
*匹配前一个字符出现0次或者无限次,即可有可无
+匹配前一个字符出现1次或者无限次,即至少一次
?匹配前一个字符出现1次或者0次,即要么只有一次,要么没有
{m}匹配前一个字符出现m次
{m,n}匹配前一个字符出现m到n次

4、匹配开头和结尾

字符功能
^匹配字符串开头, ^[ab]表示以a或b开头 ,[^ab]匹配不是a和b的字符
$匹配字符串结尾

5、re模块的使用

'''
1、导入模块
2、通过match方法,验证正则
3、判断  验证是否成功
4、如果成功,获取匹配的结果
'''

# 1、导入模块
'''
1、导入模块
2、通过match方法,验证正则
3、判断  验证是否成功
4、如果成功,获取匹配的结果
'''

# 1、导入模块
import re
# 2、通过match方法,验证正则
#re.match("正则表达式","要验证/检测字符串")
#match()方法如果匹配成功,返回mactch object对象
#match()方法如果匹配失败,返回None
result=re.match("\w{4,20}@(163|126|qq)\.com$","hello@qq.com")
# 3、判断  验证是否成功
if result:
    # 4、如果成功,获取匹配的结果
    print("匹配成功")
    #获取匹配的具体内容
    print(result.group())
else:
    print("匹配失败")
#结果
匹配成功
hello@163.com

6、 匹配分组

6.1、| 和 ( )的应用

字符功能
|匹配左右任意一个表达式
(ab)将括号中字符作为一个整体进行匹配
\num引用分组num匹配到的字符串
(?P<name>)分组起别名
(?P=name)引用别名为name分组匹配到的字符串
'''
1、导入模块
2、通过match方法,验证正则
3、判断  验证是否成功
4、如果成功,获取匹配的结果
'''

# 1、导入模块
import re
# 2、通过match方法,验证正则
#re.match("正则表达式","要验证/检测字符串")
#match()方法如果匹配成功,返回mactch object对象
#match()方法如果匹配失败,返回None
result=re.match("\w{4,20}@(163|126|qq)\.com$","hello@163.com")
# 3、判断  验证是否成功
if result:
    # 4、如果成功,获取匹配的结果
    print("匹配成功")
    #获取匹配的具体内容
    print(result.group())
    #提取子字符串
    #获取第一个括号中的内容:result.group(1)
    #获取第二个括号中的内容:result.group(2)...
    print(result.group(1))
else:
    print("匹配失败")
#结果
匹配成功
hello@163.com
163

6.2 \的应用

'''
1、导入模块
2、通过match方法,验证正则
3、判断  验证是否成功
4、如果成功,获取匹配的结果
'''
'''
1、导入模块
2、通过match方法,验证正则
3、判断  验证是否成功
4、如果成功,获取匹配的结果
'''
# 1、导入模块
import re
# 2、通过match方法,验证正则
#re.match("正则表达式","要验证/检测字符串")
#match()方法如果匹配成功,返回mactch object对象
#match()方法如果匹配失败,返回None

result=re.match("<([0-9a-zA-Z]+)><([0-9a-zA-Z]+)>.*</\\2></\\1>","<html><h1>123</h1></html>")
# 3、判断  验证是否成功
if result:
    # 4、如果成功,获取匹配的结果
    print("匹配成功")
    #获取匹配的具体内容
    print(result.group())
    print(result.group(1))
    print(result.group(2))
else:
    print("匹配失败")

#结果
匹配成功
<html><h1>123</h1></html>
html
h1

6.3起别名和别名的引用

result=re.match("<(?P<name1>[0-9a-zA-Z]+)><(?P<name2>[0-9a-zA-Z]+)>.*</(?P=name2)></(?P=name1)>","<html><h1>123</h1></html>")

7、re模块的高级用法

7.1、搜索匹配

re.search函数会在字符串内查找模式匹配,只要找到第一个匹配然后返回,如果字符串没有匹配,则返回None
格式:re.serach(pattern,string,flags=0)

需求:查找阅读次数

#导入模块
import  re
#通过search方法,验证正则
#match从需要检测的字符串的开头开始匹配
#search从需要检测的字符串中搜索满足条件的子字符串
result=re.search("\d+" ,"阅读次数:9999")
#判断验证是否成功
if result:
    print("匹配成功")
    print(result.group())
else:
    print("匹配失败")

#结果
匹配成功
9999

7.2、findall,查找所有,返回列表

re.findall遍历匹配,可以获取字符串中所以匹配的字符串,返回一个列表
格式:re.findall(pattern,string,flags=0)

需求:统计出阅读次数,转发次数和评论次数

#导入模块
import  re
#findall搜索全部,返回值是一个列表
result=re.findall("\d+" ,"阅读次数:9999,转发次数:888,转发次数:123")
#判断验证是否成功
if result:
    print("匹配成功")
    print(result)
else:
    print("匹配失败")

#结果
匹配成功
['9999', '888', '123'] 

7.3、sub字符串替换

sub(”正则表达式“,"替换后的内容”,"被替换的内容”)字符串替换(按照正则,查找字符串并且替换为指定的内容),返回值是替换后的字符串。

#导入模块
import  re
#findall搜索全部,返回值是一个列表
result=re.sub("\d+","77" ,"阅读次数:9999,转发次数:888,转发次数:123")
#判断验证是否成功
if result:
    print("匹配成功")
    print(result)
else:
    print("匹配失败")

#结果
匹配成功
阅读次数:77,转发次数:77,转发次数:77

7.3、split拆分字符串

split (“正则表达式”,“待拆分的字符串”) 按照正则拆分字符串,返回值是一个列表

#导入模块
import  re

result=re.split(":| ","info:hello@163.com zhangsan lisi")
#判断验证是否成功
if result:
    print("匹配成功")
    print(result)
else:
    print("匹配失败")

#结果
匹配成功
['info', 'hello@163.com', 'zhangsan', 'lisi']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值