Python 正则表达式

import re

    常见方法:
        compile:        # 编译
        sub:            # 替换
        match:            # 匹配,从头匹配数据
        search:        # 查找,只返回与之相匹配的第一个数据
        findall:        # 查找所有,以列表的形式返回所有数据
        finditer:        # 查找所有,以迭代器的形式返回所有数据
        split:            # 切割数据

正则表达式的一元字符:

 .(点)     #该符号 点 匹配所有符号,除了换行符(\n)

\w              #匹配有效符号 (即  [ A-Za-z0-9_ ] 与各国常用语言符号)

[ A-Za-z0-9_ ]         #匹配有效符号,与\w不同的是不包含初英文外的语言符号

\d                           #匹配数字

\s                           #匹配空白位(空格、\t制表符)

[abcdef]                 #匹配中括号中的某一个符号(列举):

[a-z]                      #中括号中若出现 - 表示一个闭区间,即小写字母a到小写字母z
^xx                       # 表示以什么什么开头
 xx$                      # 表示以什么什么结尾

eg: 该正则表达式表示:匹配以1开头第二个数字只能是3-9中的任意一个,之后为任意位数的数字,最后以数字6结尾的整个字符串

反义符:

    \W            # 匹配特殊符号
    \D            # 非数字
    \S            # 非空白位
    [^xxxx]            # 不能与中括号中的某个符号匹配


    注意:[^xxxx]和^[xxxx]的区别:    

[^xxxx]表示:不能与中括号中的某一个符号匹配(此处的 ^ 表示逻辑运算符 非 的意思)

^[xxxx]表示:以中括号中的某一个符号开始,匹配 (此处的^表示正则表达式中的一元字符)

转义符:    

在正则表达式中,如果需要原样匹配正则符号时,可以使用转义符,表示符号的原有含义
    .      \.
    \w    \\w

    注意:在python,字符串本身对应\符号有特殊含义,而正则表达式也对弈\有特殊含义
        如果需要正则中原样匹配一个 \ 符号,需要使用\\\\来做转义

    如果不想写四个反斜杠来表示一个反斜杠,也可以使用python提供的特殊写法:
        r"正则表示"        # 此时只需写两个  \\ 来表示 \ 的原意

    注意:建议以后所有的正则表达式,都在最前面加上r"正则表示"


重复问题:  

    *        # 匹配任意次(0到多次)
    +        # 匹配1到多次
    ?        # 0次或者1次
    {m}        # 准确匹配m位
    {m,}        # 至少m位
    {m,n}        # 匹配的次数就是[m,n]闭区间

分组:


    分组:是指在正则表示中,将匹配中的内容再次筛选!

# 正则表达 "<\w+>(\w+)(</\w+>)" ,第0组内容为与正则表达式匹配的内容
# 第一组内容为 第一个括号内,即\w+的内容 即为 ‘这个就是你想要的内容’
# 第二组内容为 第二个括号内,即</\w+>的内容 即为 ‘</html> ’
content = re.search("<\w+>(\w+)</\w+>","<html>这个就是你想要的内容</html>")
 
content.group() # 输出内容:<html>这个就是你想要的内容</html>
content.group(1) # 输出内容:这个就是你想要的内容
content.group(2) # 输出内容:</html> 

贪婪与懒惰(非贪婪):

    贪婪模式:正则表达式在匹配时,会尽可能多的匹配
    非贪婪模式:正则表达式在匹配时,会尽可能少的匹配

如何将默认的贪婪模式转换为非贪婪模式:

只需在多位操作前加一个  ? 即可完成模式转换!

    针对的多位操作如下:
        *        # 匹配任意次(0到多次)
        +        # 匹配1到多次
        ?        # 0次或者1次
        {m,}        # 至少m位
        {m,n}        # 匹配的次数就是[m,n]闭区间                  

 

 

实例

贪婪模式:会匹配最长的以开始位置开始,以结束位置结束的字符串;

懒惰模式:匹配尽可能少的字符

贪婪模式 正则表达式 <div>.*<\/div>  图一为匹配结果

懒惰模式 正则表达式 <div>.*?<\/div> 图二为匹配结果

图一:

图二:

 

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值