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

    正则表达式是一种通用的字符串匹配模式,使用灵活功能强大.

    Python正则表达式支持的语法可以参见这张表

    Python的标准模块re提供了对正则表达式的支持,使用r'' 表示正则字符串可以避免转义字符带来的麻烦, 比如'\d'可以写作r'd'.

    module method

    re.match

    re.match(pattern, string, flags)

    参数:

    • pattern: 描述匹配模式的正则字符串

    • string: 要匹配的文本

    • flag: 控制匹配模式的标志位.

    判断string是否符合pattern, 返回match对象包含匹配的部分:

    >>> import re
    >>> text = 'This is Finley, welcome to join us.'
    >>> m = re.match(r'w*isw*', text)
    >>> m.group(0)
    'This'

    re.search

    re.search(pattern, string, flags)

    参数与re.match()相同, 在字符串内进行模式匹配, 找到第一个匹配后返回match对象.

        >>> import re
        >>> text = 'This is Finley, welcome to join us.'
        >>> m = re.search(r'w*isw*', text)
        >>> m.group(0)
        'This'

    re.search寻找字符串内从任意位置开始的匹配, 而re.match只寻找从字符串的头部开始的匹配.

    修改上例的可以发现两者的区别:

    >>>text = 'Here is Finley, welcome to join us.'
    >>> m = re.match(r'w*isw*', text)
    >>> m is None
    True
    >>> m = re.search(r'w*isw*', text)
    >>> m.group(0)
    'is'

    re.findall

    re.findall(pattern, string)

    以列表的形式返回所有匹配的子串:

        >>> import re
        >>> text = 'This is Finley, welcome to join us.'
        >>> m = re.findall(r'w*isw*', text)
        >>> m
        ['This', 'is']

    re.sub

    re.sub(pattern, repl, string, count)

    将匹配的子串替换为repl字符串,;

    count参数指定替换个数, 默认为0表示全部替换.

    re.split

    re.split(pattern, string)

    将匹配的字符串作为分隔符, 将字符串分隔成一个列表:

        >>> import re
        >>> text = 'This is Finley, welcome to join us.'
        >>> m = re.split(r's+', text)
        >>> m
        ['This', 'is', 'Finley,', 'welcome', 'to', 'join', 'us.']

    Match

    下文关于Match与Pattern对象的介绍转载自AstralWind

    re模块中的很多方法使用Match对象表示匹配的结果, Match对象中存储了与此次匹配有关的的信息.

    属性:

    • string: 匹配时使用的文本

    • re: 匹配时使用的Pattern对象

    • pos: 文本中正则表达式开始搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同

    • endpos: 文本中正则表达式结束搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同

    • lastindex: 最后一个被捕获的分组在文本中的索引。如果没有被捕获的分组,将为None

    • lastgroup: 最后一个被捕获的分组的别名。如果这个分组没有别名或者没有被捕获的分组,将为None

    方法:

    • groups([default]):

    以元组形式返回全部分组截获的字符串。

    default表示没有截获字符串的组以这个值替代,默认为None。

    • group([group1, …]):

    获得一个或多个分组截获的字符串,指定多个参数时将以元组形式返回.

    group1可以使用编号也可以使用别名;编号0代表整个匹配的子串;

    不填写参数时,返回group(0);没有截获字符串的组返回None;

    截获了多次的组返回最后一次截获的子串。

    • groupdict([default]):

    返回以有别名的组的别名为键、以该组截获的子串为值的字典,没有别名的组不包含在内。default含义同上。

    • start([group]):

    返回指定的组截获的子串在string中的起始索引(子串第一个字符的索引)。group默认值为0

    • end([group]):

    返回指定的组截获的子串在string中的结束索引(子串最后一个字符的索引+1)。group默认值为0

    • span([group]):

    返回(start(group), end(group))。

    • expand(template):

    将匹配到的分组代入template中然后返回

    template中可以使用id或g、g引用分组,但不能使用编号0

    id与g是等价的;但10将被认为是第10个分组,如果你想表达1之后是字符'0',只能使用g<1>0。

    Pattern

    Pattern对象是一个编译好的正则表达式,通过Pattern提供的一系列方法可以对文本进行匹配查找.

    Pattern不能直接实例化,必须使用re.compile()进行构造.

    re模块方法均有Pattern实例方法作为对应版本.

    Pattern提供了几个可读属性用于获取表达式的相关信息:

    • pattern: 编译时用的表达式字符串

    • flags: 编译时用的匹配模式,数字形式。

    • groups: 表达式中分组的数量

    groupindex: 以表达式中有别名的组的别名为键、以该组对应的编号为值的字典,没有别名的组不包含在内。

  • 相关阅读:
    快速排序算法
    冒泡排序
    正则表达式
    博客园 自定义 个性主题优化 这是我迄今为止用过的最好的模板 silence
    Python 中 如何复制图片?如何更改图片存储路径? 在遇无数坑后的最全解答 百试百灵
    作业test
    day69
    day68
    day67
    day67test
  • 原文地址:https://www.cnblogs.com/fungitive/p/9136168.html
Copyright © 2011-2022 走看看