• python--正则模块


    正则模块:正则

    所有程序员都要用到正则
    爬虫方向要求对正则表达式掌握牢固
    正则表达式:是一种客观存在的规则
    re模块,是python提供的操作正则表达式的工具
    正则表达式在所有语言中都是通用的
    中括号在正咋中是字符集,只能正序,由小到大

    .(点)是匹配除了换行以外所有字符
    w小写w匹配字母或数字或下划线
    s匹配任意的空白符
    
    匹配一个换行符
    d匹配所有数字
    	匹配一个制表符
    匹配一个单词的结尾
    ^匹配字符串的开始   在字符集里面就是
    $匹配字符串结尾
    W大写的w  匹配非字母或数字或下划线
    ID匹配非数字
    S大写s匹配非空白符
    Ww 能匹配所有,互斥的
    

    只要大写和小写就匹配所有字符

    量词

    *重复零次或更多次
    +重复一次或更多次
    ?重复零次或一次
    {n}可以放数字可以放两个数字,重复N此
    {n,m}重复n到m次

    量词两条规则:
    1.每一个量词只控制前一个字符的出现次数
    2.这个量词的匹配为贪婪匹配模式    能匹配多次就不匹配零次
    量词后面加问好就是惰性匹配,按少的匹配  将贪婪匹配模式改成非贪婪匹配模式
    字符后面加量词,量词后面加问好才是控制匹配模式,问号可以单用

    ^放在字符集里面就是非什么什么就匹配

    正则表达式中是有意义的,如果想要在字符串中匹配一个w的话,得在前面再加一个,如果字符串里面的w也是有特殊意义的
    那么在正则表达式中要在加两个  太麻烦
    如果想要这样匹配的话,前面加个r加在字符串的分号前面,r功能取消python中所有转义符的功能。

    正则贪婪匹配的本质:
    回溯算法:先向后匹配然后再往回退再匹配

    import re

    re.findall()前面是正则表达式,后面是要匹配的字符串,返回的是列表,里面是字符串
    直接返回匹配的列表,如果没找到就是空列表
    re.search() 同上接收到的结果打印的时候要.group(),否则不行,匹配找到的第一个结果
    都要用if先来判断是不是空内容来用  否则报错
    re.match()同上 ,match会在自己判断时在开头加一个^,也是只返回匹配到的第一个结果,不过是从开头开始匹配

    三个方法

    在调用的角度上看,没有区别,接收两个参数按照位置传,正则表达式的字符串和待匹配的字符串
    返回值的区别,findall返回列表,所有匹配值都出现在列表中,如果没有返回空列表,search如果匹配到结果就返回第一个匹配到的
    如果没匹配到,返回none,匹配到的结果用group方法获取,match同search,不过必须要从开头匹配
    re.split  按照正则表达式匹配结果分割
    re.sub  和replace用法差不多,匹配结果来替换
    re.subn  替换后告诉替换了几次
    obj = re.compile('d{3}')将正则表达式编译成为一个正则表达式对象,规则要匹配的是3个
    ret = obj.search('abc123eeee')#正则表达式对象调用search,参数为待匹配的字符串
    print(ret.group())结果123
    re.finditer()返回一个迭代器  要用迭代器方法取值


    re.findall会优先匹配括号分组内的数据,只显示分组里面的。如果想取消分组的话,要在分组开头写一个问号一个冒号
    re.split优先级查询
    如果对查询的条件进行分组,那么根据匹配结果分割的时候,结果也是可以保留下来的。
    例如
    ret = re.split('(d)','egon3ioo4fkj)
    这样的话3和4都可以保留下来
    多个数据想取谁,先分组,然后给要取得东西取个名,前面加?P<>  尖角号里面放要取得数据的名
    用已经存在的分组(?P=name)前面尖角号是创建这样一个分组,后面等于是用这个分组

    分组

    对多个字符进行整体的量词约束
    对于一条匹配的正则,只对其中我需要的内容进行分组

    正则表达式是一种字符串的筛选规则
    re模块  是python提供的操作正则规则的模块

  • 相关阅读:
    判断一张view 是否被加载过用 nil == view.superview
    oracle9i新增sql命令merge
    Windows平台个人常用软件推荐
    ASPxSpinEdit高度无法控件的解决办法
    Oracle编码约定
    宾克斯的酒 
    “dcom项目无属性”的解决方法
    安装VS2005后找不到工具箱的解决办法
    奇怪问题一个
    Oracle临时表空间不够,导致查询出错。
  • 原文地址:https://www.cnblogs.com/gaoshengyue/p/7506328.html
Copyright © 2020-2023  润新知