• 简单实用的正则表达式


    1.什么是正则表达式

    定义:一种匹配字符串的规则

    模块要经历的两个步骤:

      a:要操作的概念本身,例如time,你只有了解了时间是什么才能去用它

      生活中处处是正则,比如你说高级动物,你会想到人,那猪狗鸡鸭都排除了;

      b:模块导入进行操作

      c:可以定义一个规则:

        来确定某一个字符串是否符合规则

        从大段的字符串中找到符合规则的内容

      d:正则表达式是一种独立的语法,和Python解释器无关;

    2.什么地方用到正则表达式

    a:爬虫领域:爬取网页,用正则表达式提取有用的信息;

    b;登录注册也的表单验证,web开发

    c:自动化开发,日志分析

    3.正则表达式都包含什么

    a:字符组:[字符组]在一个位c个字符组成的一个字符组;

    用字符串中的每一个元素,跟[字符串组]中的元素比较,只要找到相同的就提取出来,提取出来之后

    就直接从下一个开始比较,而不是从头开始;

    b:字符[0-9](0到9的所有数字) [a-z](所有小写字母) [A-Z](所有大写字母)遵循ascii码

      ***注意当[0-9a-zA-Z]时要注意他们之间Ascii码的值大小,元素要从小到大;

    c:元字符:  

    元字符 匹配内容
    小数点. 匹配字母以外的任意字符
    w 匹配字母和数字或下划线
    s 匹配所有的空白符(包括换行)
    d 匹配所有的数字
    D 匹配所有的非数字
    S 匹配所有的非空白符(包括换行)
    W 匹配f非字母和数字或下划线
     w前边界为w    w后边界为w
    匹配一个换行符
    匹配一个制表符
    a|b 匹配字符a或b(bc|b  不能是b|bc找到一个之后就停了)
    ^ 匹配字符串的开始
    $ 匹配字符串的结尾
    [字符组]

    匹配字符组的字符

    [^字符组] 匹配除了字符组中的字符
    () 匹配括号内的表达式,也表示一个组

     

     

     

     

     

     

     

     

     

     

     

     

     

    #几个关于元字符的小知识点:

    1)[dD]表示全局;所有的字符;

    2)字符:  表示字符的前边界 字符后边界,以空白符为界;

    3)^只匹配开头,$只匹配结尾,若连起来用,

    效果如下:

     

    2.量词

    量词 用法说明
    * 重复多次和更多次
    + 重复一次或更多次
    ? 重复0次或一次
    {n} 重复n次
    {n,} 重复n次或更多次
    {n,m}

    重复n到m次

     

     

     

    量词的一些小应用:1)一个量词只约束前面的一个或一组(括号里面的)字符;

    2)元字符加量词?,表示匹配了0次或一次,?表示了匹配这个动作;

    3)记忆窍门:?+*(?相当于0到1  +相当于1到无穷  *相当于0到无穷)

    3.正则的贪婪匹配和惰性模式

    贪婪匹配:尽可能多的匹配多个

    例如:d.?(先看元字符有几个,两个就是一次匹配两个字符)

      d.+(这个跟上面的区别就在于,d.+不能是单个数字) 

    惰性模式:在量词后面加?代码惰性模式,匹配时会把元字符一直比较,找到了就停下,

    而贪婪匹配用的是回溯算法,直接找到最后,然后往回找,找到停下; 

  • 相关阅读:
    【664】日常记录
    【663】dataframe 删掉指定行或者列
    【662】TensorFlow GPU 相关配置
    【661】Python split 指定多个分隔符
    【660】TensorFlow 或者 keras 版本问题
    FFMPEG视音频编解码
    cpplint中filter参数
    升级pip之后出现sys.stderr.write(f“ERROR: {exc}“)
    特征点三角化恢复3D点
    VIO——陀螺仪零偏估计
  • 原文地址:https://www.cnblogs.com/0627zhou/p/9433719.html
Copyright © 2020-2023  润新知