Python——正则表达式,完整笔记

"""
    为什么需要正则?
        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)



# ()括号内表示要的值,生成一个元祖
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 爬虫中,正则表达式是非常常用的技术,可以帮助我们从网页中提取出需要的信息。下面是一些常用的正则表达式符号和方法: 1. ".":匹配任意单个字符,除了换行符。 2. "^":匹配字符串的开始位置。 3. "$":匹配字符串的结束位置。 4. "*":匹配前一个字符出现 0 次或多次。 5. "+":匹配前一个字符出现 1 次或多次。 6. "?":匹配前一个字符出现 0 次或 1 次。 7. "{m}":匹配前一个字符出现 m 次。 8. "{m,n}":匹配前一个字符出现 m 到 n 次。 9. "(...)":分组匹配,匹配括号内的表达式。 10. "[...]":匹配括号内的任意一个字符。 11. "[^...]":匹配不在括号内的任意一个字符。 12. "\d":匹配数字,等同于 [0-9]。 13. "\D":匹配非数字,等同于 [^0-9]。 14. "\s":匹配空白字符,包括空格、制表符、换行符等。 15. "\S":匹配非空白字符。 16. "\w":匹配单词字符,包括字母、数字、下划线。 17. "\W":匹配非单词字符。 在 Python 中,使用 re 模块进行正则表达式的匹配。常用的方法包括: 1. re.compile(pattern):将正则表达式编译成一个对象,提高匹配效率。 2. re.search(pattern, string):在字符串中搜索匹配正则表达式的第一个位置。 3. re.findall(pattern, string):在字符串中搜索匹配正则表达式的所有位置,并返回一个列表。 4. re.sub(pattern, repl, string):将字符串中所有匹配正则表达式的字符替换为指定的字符串。 以上是一些常用的正则表达式符号和方法,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值