• python之路——第二块(re模块)


    re模块,用于对python的正则表达式的操作。

    字符:

      . 匹配除换行符以外的任意字符
      w 匹配字母或数字或下划线或汉字
      s 匹配任意的空白符
      d 匹配数字
       匹配单词的开始或结束
      ^ 匹配字符串的开始
      $ 匹配字符串的结束

    次数:

      * 重复零次或更多次
      + 重复一次或更多次
      ? 重复零次或一次
      {n} 重复n次
      {n,} 重复n次或更多次
      {n,m} 重复n到m次

    首先,最常用的匹配方法有:

    re.match(pattern, string, flags=0)    从起始位置开始根据模型去字符串中匹配指定内容,匹配单个

    import re
    a = re.match("d","7a1234u123uu888asf123")
    print(a.group())
    

      结果是7,如果首字符不是数字,会报错,匹配不到

    • 正则表达式
    • 要匹配的字符串
    • 标志位,用于控制正则表达式的匹配方式

    re.search(pattern, string, flags=0)   根据模型去字符串中匹配指定内容,匹配单个

    import re
    a = re.search("d","a1234u123uu888asf123")
    print(a.group())
    

      结果是1,首字符是字母,也可以匹配得到

    re.findall(pattern, string, flags=0)    上述两中方式均用于匹配单值,即:只能匹配字符串中的一个,如果想要匹配到字符串中所有符合条件的元素,则需要使用 findall。

    import re
    a = re.findall("d","a1234u123uu888asf123")
    print(a)
    

      结果是['1', '2', '3', '4', '1', '2', '3', '8', '8', '8', '1', '2', '3'],以列表的形式输出,不用group。

    re.sub(pattern, repl, string, count=0, flags=0)    用于替换匹配的字符串

    import re
    c = "a1234u123uu888asf123"
    a = re.sub("d+","DZK",c)
    print(a)
    

      结果是aDZKuDZKuuDZKasfDZK,将所有匹配到的内容替换成DZK。

    re.split(pattern, string, maxsplit=0, flags=0)      根据指定匹配进行分组

    content = "1+2+3+4"
    new_content = re.split('+', content)
    print(new_content)
    

      结果是['1', '2', '3', '4'],这里的是转义符号,根据+号将匹配到的分开

    content = "1+2-3*4/5+6"
    new_content = re.split('[+-*/]', content)
    print(new_content)
    

      结果是['1', '2', '3', '4', '5', '6'],这里需要加上括号

  • 相关阅读:
    独立构件风格之C2风格
    Mysql远程授权报语法错误
    Vuforia3D模型上传
    Hololens Vuforia 物体识别
    C盘无损分区
    MRTK 当进入某个物体时调用的函数
    Java实现斐波那契数列的两种方法
    Leetcode452. 用最少数量的箭引爆气球(排序+贪心)
    Java对二维数组排序
    帮你理清js的继承
  • 原文地址:https://www.cnblogs.com/japhi/p/6924875.html
Copyright © 2020-2023  润新知