• python学习笔记九:正则表达式


    本文不涉及正则表达式本身的内容,只记一下python中正则的用法及常用方法。

    一、re模块

    python中用re模块进行正则处理

    >>>import re
    >>>s = r'abc'
    >>>re.findall(s,'aaaabcaaaaa')
    ['abc']

    或先编译(会更快):

    >>> import re
    >>> r1 = re.compile(r'abc', re.I)
    >>> re.findall(r1,'ababcabd')
    ['abc']
    
    #或用下面的方式
    >>>r1.findall('ababcabd')
    ['abc']

    常用编译标志:

    二、常用方法

    1、compile:对正则进行编译,使运行速度加快,用法如上

    2、match:决定RE是否在字符串刚开始的位置,返回的是Match object对象,没匹配到返回None

    3、search:扫描字符串,找到这个 RE 匹配的位置,返回的是Match object对象,没匹配到返回None

    4、findall:找到RE匹配的所有子串,作为列表返回

    5、finditer:找到RE匹配的所有子串,作为迭代器返回,迭代器中是 Match object对象

    6、sub(regex,replace【可以是函数】,content,count=0【可选,替换的数量,默认为全部】,flags=0【可选,正则参数,如re.I】):数据替换

    详细参考:http://www.crifan.com/python_re_sub_detailed_introduction/

    7、subn(regex,replace,content,count=0,flags=0):跟sub相同,只是返回值中包含替换次数

    8、split(string [, maxsplit = 0]):把字符串按正则分隔

    三、Match object 中常用方法

    1、group():返回被RE匹配的字符串

    2、start():返回匹配的开始的位置

    3、end():返回匹配结束的位置

    4、span():返回一个元组包含匹配(开始和结束)的位置

    示例:

    import re
    m = re.match(r'(w+) (w+)(?P<sign>.*)', 'hello world!')
     
    print "m.string:", m.string
    print "m.re:", m.re
    print "m.pos:", m.pos
    print "m.endpos:", m.endpos
    print "m.lastindex:", m.lastindex
    print "m.lastgroup:", m.lastgroup
     
    print "m.group(1,2):", m.group(1, 2)
    print "m.groups():", m.groups()
    print "m.groupdict():", m.groupdict()
    print "m.start(2):", m.start(2)
    print "m.end(2):", m.end(2)
    print "m.span(2):", m.span(2)
    print r"m.expand(r'2 13'):", m.expand(r'2 13')
     
    ### output ###
    # m.string: hello world!
    # m.re: <_sre.SRE_Pattern object at 0x016E1A38>
    # m.pos: 0
    # m.endpos: 12
    # m.lastindex: 3
    # m.lastgroup: sign

    # m.group(1,2): ('hello', 'world') # m.groups(): ('hello', 'world', '!') # m.groupdict(): {'sign': '!'} # m.start(2): 6 # m.end(2): 11 # m.span(2): (6, 11) # m.expand(r'2 13'): world hello!
  • 相关阅读:
    网络银行木马DYRE知多少(1)
    搭建LVS+Keepalived负载均衡集群
    Android中@+id和@id的差别
    LeetCode258——Add Digits
    hive 报错/tmp/hive on HDFS should be writable. Current permissions are: rwx--x--x
    java 调用 库文件错误查找方法
    如何使用安信可 ESP 系列一体化开发环境【转】
    如何安装安信可一体化开发环境【转】
    ESP8266串口模块的基本使用【转】
    WIFI模块ESP8266的使用指南【转】
  • 原文地址:https://www.cnblogs.com/lurenjiashuo/p/python-note-regex.html
Copyright © 2020-2023  润新知