zoukankan      html  css  js  c++  java
  • python3+ 模块学习 之 re

    re 模块

    参考:Python3 如何优雅地使用正则表达式(详解系列)  

       Python3 正则表达式特殊符号及用法(详细列表)    (出处: 鱼C论坛)

    正则表达式

    常用元字符:
    . ^ $ * + ?  {  } [  ] | (  )         

    * 表示匹配0次或多次
    + 表示匹配1次或多次
    ? 表示匹配0次或1次
    {m,n} 表示匹配m到n次(前四个加'?'实现非贪婪匹配)
    | 表示或操作
    ^ 匹配字符串的起始位置
    $ 匹配字符串的结束位置

    (元字符)    ---去除元字符的特殊功能,表示匹配正常字符

    (普通字符)    ----实现特殊功能

             (普通字符小写,表示肯定,普通字符大写,表示非    e.g. d相当于[0-9]   D相当于[^0-9])

    d 相当于[0-9]
    s 匹配任何空白字符,相当于[ fv]
    w 匹配任何单词字符
     匹配单词的开始或结束,表示单词边界
     只匹配字符串的结束位置

    python字符串与正则表示字符串有冲突,如(python字符串表示ASCII码8制表符,而正则表达式则表示匹配单词的开始或结束),在python中书写正则表示式时,要使用python的原始字符串,即添加'r'前缀。 

    Python 中正则表达式的扩展语法('...'表示正常的正则表达式):

      (?:...)      表示非捕获组,非捕获组不会影响其他组的序号

      (?P<name>...)  表示命名组,反向引用(?P=name)

      前向断言(零宽,即断言不会被匹配到结果字符串中,也不会消耗字符串):即断言在此位置的后面匹配的是...的内容(在断言字符串的前面,故称前向断言)

        (?=...)    表示肯定,匹配成功表示成功,否则失败。

        (?!...)    表示否定, 匹配失败表示成功,否则失败

          e.g.  .*[.](?!bat$).*$  匹配文件扩展名不为'bat'的文件

      后向断言(零宽,即断言不会被匹配到结果字符串中,也不会消耗字符串):即断言在此位置的前面匹配的是...的内容(在断言字符串的后面,故称后向断言)

        (?<=...)   表示肯定,匹配成功表示成功,否则失败。

        (?<!...)   表示否定, 匹配失败表示成功,否则失败

      条件匹配:  

        (?(id/name)Y|N)       ,如果id 或者name匹配,则匹配'Y',否则,匹配'N'

      字符串替换的引用:

        g序号  或  g<序号>    推荐用第二种方法,防止歧义

        g<name>         用命名组的方式引用

          

    python中使用正则表达式:(re module)

    1.调用全局函数:

    match(), search(), findall()

    参数:(正则表达式, 匹配字符串[,匹配标志])

    ASCII, A 使得转义符号如w, , s, d只能匹配ASCII字符
    DOTALL, S 使得. 匹配任何符号,包括换行符
    IGNORECASE, I 匹配不区分大小写
    LOCALE, L 支持当前的语言设置
    MULTILINE, M   多行匹配
    VERBOSE, X 启用详细的正则表达式(增加正则表达式的可读性,匹配时忽略' '和' ' )

    2.创建模式对象:

    p = re.compile(正则表达式[,匹配标志])

    然后调用对象的方法。

    详见python标准文档。

    python全局函数和对象方法中返回的match对象,设为m:

    m.group(0)    查看整个正则表达式的匹配字符串

    m.group(1)    查看第一个分组的匹配结果(分组在python中用小括号表示),其他分组依此类推

    m.group('name')     同上,用分组的名字索引

    m.groups()             返回所有分组的匹配结果,用元组表示

    m.groupdict()    同上,用字典表示

    m.start([group])      返回匹配的起始位置

    m.end([group])    返回匹配的终止位置

    m.span()     查看匹配的首尾位置的元组

    详见python标准文档。

  • 相关阅读:
    PAT Advanced 1008 Elevator (20) [数学问题-简单数学]
    PAT Advanced 1051 Pop Sequence (25) [栈模拟]
    PAT Basic 完美数列(25) [two pointers]
    PAT Basic 插⼊与归并(25) [two pointers]
    PAT Advanced 1089 Insert or Merge (25) [two pointers]
    第五章 数据的共享和保护
    第四章 面向对象程序设计的基本特点 课堂笔记
    第三章 函数 课堂笔记
    扫描线-Meteor UVALive
    贪心-Stall Reservations POJ
  • 原文地址:https://www.cnblogs.com/tigerm/p/6127436.html
Copyright © 2011-2022 走看看