zoukankan      html  css  js  c++  java
  • re正则表达式

    正则表达式

    Regular Expression ,缩写regex,regexp,RE等

    正则表达式式文本处理的重要技术,用它可对字符串按照某种规则进行检索

    元字符

    代码 说明 举例
    [abc] 表示一个字符位置,匹配字符集合中的任意一个字符 [abc]匹配apple中的'a'
    [^abc] 表示一个字符位置,匹配除去集合内字符的任意一个字符 [^abc]匹配apple中的'p''p''l''e'
    [a-z] 表示一个字符位置,表示匹配范围内的字符(闭区间) [a-z][0-9]
    [^a-z] 表示一个字符位置,表示除去范围内的字符(闭区间) [a-z][0-9]
    d 表示一个字符位置,[0-9]中一个数字
    D 表示一个字符位置,表示[^0-9]中非数字
    s 表示一个字符位置,匹配一个空白字符包括换行,制表符,空格[f v]
    S 表示一个字符位置,匹配一个非空白字符
    w 表示一个字符位置,匹配[a-zA-Z0-9]包括中文
    W 表示一个字符位置,匹配w之外的字符
    . 表示一个字符位置,匹配除换行符外任意一个字符 abc. .abc
    * *前一个字符可以重复0到无数次
    + +前一个字符重复至少一次
    ? ?前一个字符重复0次或者一次
    ^ 表示以xxx开头 ^ab 表示以ab开头的
    $ 以xxx结尾 ab$ 表示以ab结尾的
    {n} 重复固定n次 ew{1}单词中e后面只能有一个非空白字符
    {n,} 重复至少n次 ew{1,}等价于ew+
     匹配的单词的边界 b找到文本中b开头的单词
    x|y 匹配x或者y

    没写一个字符位置的就是一个或多个字符位置

    • 单行模式:.可以匹配所有字符,包括换行符,^表示整个字符串的开头,$表示整个字符串的结尾 使用re.S进入单行模式

    • 多行模式:.可以匹配存了换行符之外的字符 ,^表示行首,$表示行尾.开始指的是 后紧接着下一个字符,结束指的是 前的字符 默认多行模式

      捕获(分组)

    s = 'abc abcd abcfdd'
    print(re.findall('a(.)c(d)', s))
    >>>[('b', 'd')]
    

    只返回a后面有东西,c后面有d 匹配后返回二元组列表

    贪婪模式

    s = 'abcdefgbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbg'
    print(re.findall('a.*g', s))
    >>>['abcdefgbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbg']
    

    非贪婪模式

    s = 'abcdefgbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbg'
    print(re.findall('a.*?g', s))
    >>>['abcdefg']
    

    re模块

    常量

    常量 说明
    re.M 多行模式
    re.S 单行模式
    re.I 忽略大小写
    re.X 忽略表达式中空白字符

    使用| 位或运算开启多种选项

    方法

    编译

    re.complile(pattern,flags=0)

    设定flags,编译模式,返回正则表达式对象regex。

    pattern就是正则表达式字符串,flags是选项。正则表达式需要被编译。

    单次匹配

    re.match(pattern,string,flag=0)

    从字符串开头开始匹配,返回match对象

    re.search(pattern,string,flag=0)

    从头搜索第一个匹配,返回match对象

    全文搜索

    re.findall(pattern,string,flag=0)

    对整个字符串,从左至右匹配,返回所有匹配项列表

    匹配替换

    re.sub(pattern,replacement,string,flag=0)

    将匹配字符转用replacement代替,返回新字符串

    re.subn(pattern,replacement,string,count = 0flag=0)

    返回一个元组,count显示替换了多少次

  • 相关阅读:
    关于TCP中对于ACK报文是否需要确认的理解
    定时器
    几个错误
    C++继承与组合
    Ubuntu18的Redis: 4.0安装
    Ubuntu18.04:MySQL: 5.7安装与卸载并配置远程登录(服务器装Mysql5.7一条龙服务)
    Ubuntu18服务器修改字体大小
    Ubuntu修改系统时间
    Ubuntu18.04防火墙安装关闭开启操作等
    Ubuntu阿里云镜像源配置
  • 原文地址:https://www.cnblogs.com/agsol/p/11605162.html
Copyright © 2011-2022 走看看