zoukankan      html  css  js  c++  java
  • python024

    正则表达式
    正则表达式是对字符串操作的一种逻辑公式.我们一般使用正则表达式对字符串进行匹配和过滤.使用正则的优缺点:
    优点:灵活,功能性强,逻辑性强
    缺点:上手难,一旦上手,会爱上这个东西.
    正则表达式由普通字符和元字符组成.元字符:元字符才是正则表达式的灵魂.元字符中的内容太多了,在这里我们介绍一些常用的.
    1.字符组
    字符组就是简单的用[]括起来.在[]中出现的内容会被匹配.例如[a:b:c]匹配a或b或c
    如果字符组中的内容过多还可以使用-,例如:[a-z]匹配a到z之间的所有字母[0-9]匹配到所有的阿拉伯数字
    2.简单元字符
    基本的字符.常用的就那么几个
    . 匹配出换行符以外的任意字符
    w 匹配字母或数字或下划线
    s 匹配任意的空白符
    d 匹配数字
    匹配一个换行符
    匹配一个制表符
     匹配一个单词的结尾
    ^ 匹配字符串的开始
    $ 匹配字符串的结束
    W 匹配到非字母或数字或下划线
    D 匹配到非数字
    S 匹配非空白符
    a|b 匹配字符a或字符b
    () 匹配括号内的表达式,也表示一个组
    [...] 匹配字符组中的字符
    [^...] 匹配除了字符组中字符的所有字符
    3.量词
    我们目前匹配到的所有内容都是单一文字符号.那么如何一次性匹配到很多个字符呢,我们用到量词
    * 重复零次或更多次
    + 重复一次或更多次
    ? 重复一次或一次
    {n} 重复n次
    {n,} 重复n次或更多次
    {n,m} 重复n到m次
    4.惰性匹配和贪婪匹配
    在量词中的*,+,{}都属于贪婪匹配.就是尽可能多的匹配到结果
    str: 麻花藤昨天让英雄联盟关服了
    reg: 麻花藤.*
    此时匹配到的是整句话
    在使用.*后面如果加了?则是尽可能的少匹配.表示的是惰性匹配
    str:   麻花藤昨天让英雄联盟关服了
    reg:     麻花藤.*?
    此时匹配的是麻花藤
    str:<div>胡辣汤</div>
    reg:<.*>
    结果: <div>胡辣汤</div>
    str:<div>胡辣汤</div>
    reg:<.*?>
    结果:<div>
         </div>
    str:<div>胡辣汤</div>
    reg:<(div|/div*)?>
    结果:  <div>
           </div>
    .*?x的特殊含义 找到下一个为止
    str:abcdefgxhijklmn
    reg:.*?x
    结果:abcdefgx
    5.分组
    在正则中使用()进行分组.比如.我们要匹配一个相对复杂的身份证号.身份证号分成两种.老的身份证号有15位.新的身份证号有18位.并且新的身份证号结尾有可能是x.
    ^[1-9]d{14}(d(2)[0-9x])?$
    ^([1-9]d{16}[0-9x]|[1-9]d{14})$
    6.转义
    在正则表达式中,有很多有特殊意义的是元字符, 比如 和s等,如果要在正则中匹 配正常的" "而不是"换行符"就需要对""进行转义, 变成'\'.
    在python中,无论是正则表达式,还是待匹配的内容,都是以字符串的形式出现的,在字符串中也有特殊的含义,本身还需要转义. 所以如果匹配⼀一次" ", 字符串串中要写成'\n', 那么正则里就要写成"\\n",这样就太麻烦了.这个时候我们就⽤用到了r' '这个概念, 此时的正则是r'\n'就可以了.




  • 相关阅读:
    Vuecli3项目引入网页视频流媒体播放器EasyPlayer.JS报videojs not definde错误如何解决?
    穷人和富人的区别
    如何使用PCATTCP测试局域网传输速度
    DirectFB同时显示到X11和VNC上
    使用Openssl生成CA及签发证书方法
    内存泄漏定位
    关于在C++开发的项目中引用后缀名为.c文件的一句话提醒
    在Win32下建立GTK开发环境
    GTK/DFB中的WaitCursor
    GTK+/DFB优化
  • 原文地址:https://www.cnblogs.com/Li-Kai-168/p/9768522.html
Copyright © 2011-2022 走看看