• Python学习笔记(一)


      正则表达式(和JavaScript等语言共通)

       正则表达式就是对一些字符的匹配,查询,获取的优化,使之更加简单,但是在这种优化强度下,它又及其复杂,特性,需要记得的东西很多的说

      一, 导入Re库

      由于re库是下载安装完python自带的,所以无需再下载

      # 如果没有,则需要先下载

    1 pip3 install re
    1 import re

      二,方法

       就目前来讲,re最常用的三种方法

      • match()
      • search()
      • findall() 

        首先,match() 方法就是从开头开始查找,若是第一个首字符以及后面的不是所要匹配的内容,则会返回None

       其次,search() 方法就相对之广多了,它是对 整个要匹配的String进行检索

       当然,findall)() 顾名思义,就是对所有内容进行检索,并且返回字符串数组

       对了,三个方法的参数均为

        pattern, string, flags=0

          pattern ==>  要匹配的内容

        string  ==>  被匹配的字符串

        flags   ==>  匹配方式

      现在来一一,细说。

      首先来说 flags(当然只记录常用的喽)

    • re.I        忽略大小写
    • re.M      多行匹配,影响边界字符 ^ 和 $
    • re.X       使得我们以更灵活的方式理解正则表达式
    • re.S       匹配包括换行符号在内的所有字符
    • .......                

      其次,最多的就是 pattern 这些元字符

    • [0123456789]      匹配0-9所有的数字
    • [0-9a-zA-Z]          匹配任意的数字,字母,下划线
    • [^sunck]               匹配除了 sunck 这几个字母以外的所有字母
    • [d]                      匹配0-9所有的数字
    • [D]                      匹配非数字字符,效果同[^0-9]
    • [w]                      匹配数字,下划线,字母,并且能匹配汉字
    • [W]                     匹配非数字,下划线,字母
    • [s]                      匹配任意的空白符,空格,换行,换页,制表,回车
    • [S]                     匹配任意的非空白符号,效果同[^ f ] 

       关于其中的注意项

       中括号中的 ^ 是非的意思,表示不匹配集合种的字符

        后字母的大写是小写的的意思,表示..........

       补充方法

         match, search 方法后接 .span 可以返回匹配的内容在字符串中的位置下标

        代码示范:

    1 print(re.match("[^sunck]", "sunck is a good man"))
    2 # None
    3 print(re.search("[^sunck]", "sunck is a good man"))
    4 # match: " ", span=(5, 6)
    5 print(re.search("[^sunck]", "sunck is a good man").span())
    6 # (5, 6)
    7 print(re.findall("[d]", "39abc4"))
    8 # ['3', '9', '4']

        接下来的都算补充内容8

     补充:边界字符

    •  ^             行首匹配
    • $             行尾匹配
    • A            字符串开始匹配,区别于 ^
      • 首先,它匹配的是整个字符串的首位置, 而 ^ 是一行的行首
      • 同时,这也意味着,当 flags = re.M 多行匹配时,^ 是可以同时匹配多行行首的,而 $ 却不行
    •             字符串结束位置匹配(区别于 $)
    •             匹配一个单词的边界
    • B           匹配非单词边界
      1 print(re.search("^sunck", "sunck is a good man"))
      2 # <re.Match object; span=(0, 5), match='sunck'>
      3 print(re.search("sunck$", "sunck is a good man sunck"))
      4 # <re.Match object; span=(20, 25), match='sunck'>
      5 print(re.search("^sunck", "is a good man sunck"))
      6 # None

     边界字符不是加在 [] 里的

     1 #  B比较
     2 print(re.search(r"er", "never"))
     3 # <re.Match object; span=(3, 5), match='er'>
     4 print(re.search(r"er", "nerve"))
     5 # None
     6 print(re.search("erB", "never"))
     7 # None
     8 print(re.search("erB", "nerve"))
     9 # <re.Match object; span=(1, 3), match='er'>
    10 这就是两者间的区别

      

  • 相关阅读:
    Excel生成二维折线图详细教程 TheChosen
    sql语句截取字段中某一符号前几位的方法? TheChosen
    python快速下载包的镜像源? TheChosen
    Android 超大图长图浏览库 SubsamplingScaleImageView 源码解析
    记录线上APP一个排序比较引发的崩溃 Comparison method violates its general contract!
    Android 内存泄漏检测工具 LeakCanary(Kotlin版)的实现原理
    改数组长度
    枚举数组所有组合
    Ubuntu20.04启动后光标一直闪烁
    harbor镜像仓库清理操作
  • 原文地址:https://www.cnblogs.com/xmdykf/p/11372796.html
Copyright © 2020-2023  润新知