python中的正则表达式

目录

1.正则表达式的简介:

01、正则表达式的定义:

正则表达式是指专门用于描述或刻画字符串内在规律的表达式

02、正则表达式的使用场景

  1. 无法通过切片将字符串的子串返回
  2. 借助于replace方法无法完成非固定值或非固定位置值的替换
  3. 借助于split方法无法按照多种值实现字符串的分割

03、正则表达式的常用函数

#findall():返回字符串中所有与模式匹配的字符串列表

python 复制代码
findall(pattern,string,flags=0)
#pattern:指定需要匹配的正则表达式
#string:指定待处理的字符串
#flags:指定匹配模式,常用的可以是re.I,re.M,re.S,re.X;
#re.I的模式是让正则表达式对大小写不敏感
#re.M的模式是让正则表达式可以多行匹配
#re.S的模式指明正则符号.可以匹配任意字符,包括换行符\n
#re.X模式允许正则表达式可以写的更加详细,如多行表示,忽略空白字符,加入注释等

#sub:用指定的字符串(repl)替换字符串中与模式匹配的项,如果count指定,则替换不超过count次。

python 复制代码
sub(pattern,repl,string,count=0,flags=0)
#pattern:同findall函数中的pattern
#repl:指定替换成的新值
#string:同findall函数中的string
#count:用于指定最多替换的次数,默认为全部替换
#flags:同findall函数中的flags

#split():根据正则表达式模式将字符串分割成多个部分,并返回一个包含这些部分的列表

python 复制代码
split(pattern,string,maxsplit=0,flags=0)
#pattern:同findall函数中的pattern
#maxsplit:用于指定最大分割次数,默认为全部分割
#string:同findall函数中的string
#flags:同findall函数中的flags

match():尝试从字符串的起始位置匹配一个模式,如果匹配成功则返回匹配对象,否则返回None。

python 复制代码
match(pattern, string, flags=0)
#pattern:同findall函数中的pattern
#string:同findall函数中的string
#flags:同findall函数中的flags

2.常用的正则符号:

字符 功能
. 英文状态的句号.指代任意字符(如数字,字母,标点符号,汉字等),但除了换行符\n
反斜杠 表示转义符,用于转换含义的符号
\n 指代换行;
\t 指代tab制表符
\d 指代0-9中任一数字
\s 指代任意一种空白(如空格,tab,换行等)
\w 指代字母、数字、下划线中的任意一种
. 指代句号点本身(前面加的有反斜杠,显示的问题)
[] 英文状态的中括号,指代字符集合,当需要特定字符匹配时,可以选择中括号
() 英文状态的圆括号指定特定内容的截取(抠)
英文状态下的问号,表匹配前一个字符0次或1次
+ 加号,表示匹配前一个字符1次及以上
* 星号,表示匹配一个字符0次及以上
{} 英文状态下的{},表示匹配前一个字符特定的次数或范围
^ 匹配字符串开头
$ 匹配字符串结尾

3.正则表达式的使用

01:.*配合使用,提取所有含红的字符串

python 复制代码
import re
string1 =['小红','红花','绿叶','小桃红','红领巾','落红','紫鸢']
res = []
for i in string1:
    res.extend(re.findall('.*红.*',i))
print(res)
# ['小红', '红花', '小桃红', '红领巾', '落红']

02.反斜杠和.配合使用,提取出动力总成的值

python 复制代码
import re
# 提取出动力总成的值
s2 = '此次新朗逸主要搭载了1.5L和1.5T两种动力总成的发动机。别克英朗则搭载了1.0T和1.3T的动力总成。'
print(re.findall('1\...',s2)) ##一个点是小数点,后面两个点事任意两个字符
# ['1.5L', '1.5T', '1.0T', '1.3T']

03::[]的使用

python 复制代码
import re
s5 = '通过对比新朗逸1.5L和1.5T两种动力在1.5年行驶期后的数据。发现1.5T的口碑相对较好!'
print(re.findall('1.5[a-zA-Z]',s5))
# ['1.5L', '1.5T', '1.5T']

04:()的使用

python 复制代码
# 提取出用户的年龄
import re
s6 = 'id:1, name:Tom, age:3, gender:1; id:2, name:Lily, age:5, gender:0'
print(re.findall('\d',s6))
print(re.findall('age:\d',s6))
print(re.findall('age:(\d)',s6))
#['1', '3', '1', '2', '5', '0']
#['age:3', 'age:5']
#['3', '5']

05:反斜杠和{}配合使用

python 复制代码
import re
email_list = [ "xiaoWang@163.com" ,"xiaoWang@163.comh" ,".com.xiaowang@qq.com"]
for email in email_list:
    ret = re.match("[\w]{4,20}@(163|126|qq)\.com$", email) #\.代表只是一个点 $代表以xxx结尾的字符串
    if ret:
        print("%s ---是符合规定的邮件地址" % email)
    else:
        print("%s ---不符合要求" % email)
#xiaoWang@163.com ---是符合规定的邮件地址
#xiaoWang@163.comh ---不符合要求
#.com.xiaowang@qq.com ---不符合要求        

06:()提取数据

python 复制代码
# 导入用于正则表达式的re模块
import re
# 取出字符中所有的天气状态
string1 = "{ymd:'2018-01-01',tianqi:'晴',aqiInfo:'轻度污染'},{ymd:'2018-01-02',tianqi:'阴~小雨',aqiInfo:'优'},{ymd:'2018-01-03',tianqi:'小雨~中雨',aqiInfo:'优'},{ymd:'2018-01-04',tianqi:'中雨~小雨',aqiInfo:'优'}"
print(re.findall("tianqi:'(.*?)'", string1))
# ['晴', '阴~小雨', '小雨~中雨', '中雨~小雨']

07:sub()函数使用

python 复制代码
import re
string3 = '据悉,这次发运的4台蒸汽冷凝罐属于国际热核聚变实验堆(ITER)项目的核二级压力设备,先后完成了压力试验、真空试验、氦气检漏试验、千斤顶试验、吊耳载荷试验、叠装试验等验收试验。'

print(re.sub('[,。、a-zA-Z0-9()]','',string3))
相关推荐
Narutolxy28 分钟前
Python 单元测试:深入理解与实战应用20240919
python·单元测试·log4j
Amo Xiang1 小时前
2024 Python3.10 系统入门+进阶(十五):文件及目录操作
开发语言·python
liangbm31 小时前
数学建模笔记——动态规划
笔记·python·算法·数学建模·动态规划·背包问题·优化问题
B站计算机毕业设计超人1 小时前
计算机毕业设计Python+Flask微博情感分析 微博舆情预测 微博爬虫 微博大数据 舆情分析系统 大数据毕业设计 NLP文本分类 机器学习 深度学习 AI
爬虫·python·深度学习·算法·机器学习·自然语言处理·数据可视化
羊小猪~~1 小时前
深度学习基础案例5--VGG16人脸识别(体验学习的痛苦与乐趣)
人工智能·python·深度学习·学习·算法·机器学习·cnn
waterHBO3 小时前
python 爬虫 selenium 笔记
爬虫·python·selenium
编程零零七4 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
AIAdvocate6 小时前
Pandas_数据结构详解
数据结构·python·pandas
小言从不摸鱼6 小时前
【AI大模型】ChatGPT模型原理介绍(下)
人工智能·python·深度学习·机器学习·自然语言处理·chatgpt
这孩子叫逆8 小时前
6. 什么是MySQL的事务?如何在Java中使用Connection接口管理事务?
数据库·mysql