"""
为什么需要正则?
1、文本处理已经成为计算机常见的工作之一
2、对文本内容进行快速搜索定位,提取是比较繁琐和复杂的
3、为了解决这个问题,产生正则表达式
作用:
可以称之为文本的高级匹配模式,提供搜索、替换、查找等功能,
本质是由一系列特殊符号和字符组成的字符串
特点:
方便进行检索修改文本的操作
支持多种编程语言
使用起来比较灵活
使用或者设计正则表达式的原则:
1、正确性:能够正确的匹配要求内容
2、唯一性:除了咱们需要的内容,尽可能减少不需要的内容
3、全面性:对目标特征考虑全面,不遗漏咱们需要的内容
python使用正则 -----> re 模块
"""
import re
"""
re.findall(pattern,str)
功能:使用正则表达式,匹配字符串
参数:
pattern:正则表达式字符串
str: 目标字符串 或者 原字符串
返回值:返回匹配到的内容
元字符:
在正则表达式中, 有一定含义的特殊字符
"""
#1、匹配普通字符 比如 元字符:a b c & #
#匹配规则:匹配字符本身
# str = "asdaeswrftwawgrgdewgahthghahygafg"
# L = re.findall("a",str)
# print(L)
# str1 = "山对面的朋友你好吗"
# L1= re.findall("你好",str1)
# print(L1)
# 2、或 ------> 元字符:|
#匹配规则:匹配 | 两边任意一个正则表达式
# 注意:|的两边不要有空格
# str1 = "山对面的朋友你好吗"
# L1= re.findall("你好|朋友",str1)
# print(L1)
"""
3、匹配单一字符
元字符:.
规则:匹配除了 \n 以外的任意一个字符
"""
# str1 = "abc adc a8c a$c"
# L1= re.findall("a.c",str1)
# print(L1)
"""
4、匹配开始位置
元字符:^
规则:匹配一个字符串开头的位置
如果是在[]外面的,表示开头。如果在[]里边的,表示取反
"""
# str1 = "abc adc a8c a$c"
# L1= re.findall("^a",str1)
# print(L1)
"""
5、匹配结尾位置
元字符:$
规则:匹配字符串结束的位置
"""
# str1 = "abc adc a8c"
# L1= re.findall("adc a8c$",str1)
# print(L1)
"""
6、匹配重复:
元字符:*
规则:匹配前面的正则表达式重复0次或者多次
"""
# str1 = "aabcsadcda8c"
# L1= re.findall("a*",str1)
# print(L1)
"""
7、匹配重复
元字符:+
规则:匹配前面的正则表达式1次或者多次
"""
# str1 = "aabcsadcda8c"
# L1= re.findall("ab+",str1)
# print(L1)
"""
8、匹配重复
元字符:?
规则:匹配前面的正则表达式0次或者1次
"""
# str1 = "aabcsadcda8c"
# L1= re.findall("a?",str1)
# print(L1)
"""
9、匹配重复
元字符:{n}
规则:匹配前面的正则表达式n次
"""
# str1 = "aabcsadcda8c"
# L1= re.findall("a{2}",str1)
# print(L1)
"""
10、匹配重复
元字符:{m,n}
规则:匹配前面的正则表达式m到n次
"""
# str1 = "aabcsadcda8cagfdaaahdhhaaaafaefeafa"
# L1= re.findall("a{1,4}",str1)
# print(L1)
"""
11、匹配字符集
元字符:[字符集]
规则:匹配括号内任意一个字符
比如:
[abc123] a b c 1 2 3
[a-z] 匹配所有的小写字母
[A-Z] 匹配所有的大写字母
[0-9] 匹配所有的数字
[0-9A-Za-z]
"""
# str1 = "aabcsadcda8cag46453fdaaa2hdhhaa4aafaefeafa"
# L1= re.findall("[0-4A-Z]+",str1)
# print(L1)
"""
12、匹配字符集
元字符:[^...]
规则:除了字符集中的任意一个字符
[^abc] --->def...
"""
# str1 = "aabASFcsadcda8cag46453fdaaa2hdhhaa4aafaefeafa"
# L1= re.findall("[^a-z]",str1)
# print(L1)
"""
13、匹配任意(非)数字字符
元字符: \d \D
规则: \d匹配的是任意数字字符 相当于 -----> 0-9
\D匹配任意非数字字符 相当于 -----> [^0-9]
"""
# str1 = "151512354613"
# L1= re.findall("1\d",str1)
# print(L1)
# str2 = "hello python"
# L2 = re.findall("\D+",str2)
# print(L2)
"""
14、匹配空(非空)字符串
元字符: \s \S
规则: \s : 匹配任意空字符
\S : 匹配任意非空字符
"""
# str2 = "hello python and hello world"
# L2 = re.findall("\S+",str2)
# print(L2)
"""
re.march:
返回开头匹配到的字符串
"""
# 判断一下哪几个是手机号
# L =["15512266896","as11af156","9845615"]
# for i in L:
# L1 = re.findall("^1[3,5,8,7]\d{9}$",i)
# if len(L1) != 0:
# print("%s:是手机号"%i)
"""
1、re.findall():查找目标字符串
2、re.split(pattern,str,)
功能:通过正则表达式,切割字符串
参数:pattern:正则 str:原字符串
返回值: 分割后的字符串列表
"""
# str2 = "hello python and hello world"
# L2 = re.split("l",str2)
# print(L2)
"""
3、re.sub(pattern,replace,str)
功能:替换正则匹配到的内容
参数:
pattern:正则 replace:要替换的内容 str:目标字符串
返回值:返回替换掉后的字符串
"""
# str2 = "hello python and hello world"
# L2 = re.sub("l","m",str2)
# print(L2)
"""
4、re.match(pattern,str)
功能:匹配目标字符串开头位置
参数:pattern : 正则 str : 目标字符串
返回值:匹配到的内容
注意:
1、需要使用group()获取字符串匹配到的部分
2、通过括号,结合group可以实现匹配多个想要的值
"""
# str21 = "hello 2 hello 1"
# L1 = re.match("he",str21).group(0)
# print(L1)
"""
5、re.search(pattern,str)
功能:匹配目标字符串,只能匹配第一个
参数:pattern : 正则 str: 目标字符串
返回值:匹配到的内容
"""
# str21 = "hello 2 hello 1"
# L1 = re.search("he",str21).group()
# print(L1)
# L2 = re.findall("he",str21)
# print(L2)
"""
贪婪模式和非贪婪模式:
1、贪婪模式:
正则表达式的重复,
默认总是尽可能多的向后匹配
匹配内容
* + ? {m,n}
2、非贪婪模式:
正则表达式的重复,尽可能少的往后匹配
*? +? ?? {m,n}?
注意:
如果想把贪婪模式变成非贪婪模式,需要在后面加一个"?"
"""
"""
1、匹配出文章的阅读次数:“阅读次数为 9999”
2、找出各个编程语言的阅读次数:“python = 9999,c = 7890 , c++ = 12345”
3、将python的阅读次数 +10:"python == 997"
4、切割字符串"info:xiaozhang 33 shandong" 以:或者|切割
"""
# t1 = "阅读次数为 9999"
# L1 = re.search("阅读次数为 \d",t1).group(0)
# print(L1)
# read_times = "阅读次数为 9999"
#
# t2 = ("python = 9999","c = 7890","c++ = 12345")
# L2 = re.search("\d",t2).group(0)
# print(L2)
# ()括号内表示要的值,生成一个元祖
Python——正则表达式,完整笔记
最新推荐文章于 2024-04-26 21:06:24 发布