zoukankan      html  css  js  c++  java
  • python正则表达式中的分组 group

    维基百科:http://wiki.ubuntu.org.cn/Python正则表达式操作指南

    组是通过 "(" 和 ")" 元字符来标识的。 "(" 和 ")" 有很多在数学表达式中相同的意思;它们一起把在它们里面的表达式组成一组。举个例子,你可以用重复限制符,象 *, +, ?, 和 {m,n},来重复组里的内容,比如说(ab)* 将匹配零或更多个重复的 "ab"。
    例子:如果不引入括号,整个表达式作为一个组,是group(0)
    >>> import re
    >>> p=re.compile('d-d-d')
    >>> m=p.match('2-3-1')
    >>> m.groups()
    ()
    >>> m.group()
    '2-3-1'
    >>> m.group(1)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: no such group
    如果引入括号,可以将上面的表达式分成3组,如下
    >>> p=re.compile('(d)-(d)-(d)')
    >>> m=p.match('1-2-3')
    >>> m.group()
    '1-2-3'
    >>> m.group(1)
    '1'
    >>> m.group(0,2,1)
    ('2-3-1', '2', '1')
    也可以给各个组取名字,例如,给第一个数组取名叫first
    >>> p=re.compile('(?P<first>d)-(d)-(d)')
    >>> m=p.match('1-2-3')
    >>> m.group(1)
    '1'
    >>> m.group('first')
    '1'
    更多更全的功能,可以参见维基百科
    
    正则表达式中,group()用来提出分组截获的字符串,()用来分组
    import re
    a = "123abc456"
    print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0)   #123abc456,返回整体
    print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1)   #123
    print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2)   #abc
    print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3)   #456
    
    1. 正则表达式中的三组括号把匹配结果分成三组
    
     group() 同group(0)就是匹配正则表达式整体结果
     group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分。
    2. 没有匹配成功的,re.search()返回None
    
    3. 当然郑则表达式中没有括号,group(1)肯定不对了。
    
    组是通过 "(" 和 ")" 元字符来标识的!!!!!
    
    um  : 引用分组num匹配到的字符串
    import  re
    s = "<html><h1>正则表达式</h1></html>"
    
    re.match(r"<(.+)><(.+)>.+</2></1>",s)   #</2>表示引用第二组匹配到的字符串,同理</1>表示引用第一组匹配到的字符串。
    Out[13]: <_sre.SRE_Match object; span=(0, 27), match='<html><h1>正则表达式</h1></html>'>
    
    f = re.match(r"<(.+)><(.+)>.+</2></1>",s)
    
    f.group(1)
    'html'
    
    f.group(2)
    'h1'
    
    f.group()
    '<html><h1>正则表达式</h1></html>'
    
  • 相关阅读:
    Angular2.x-主/细节组件
    Angular2.x-显示heroes列表
    Angular2.x
    Linux-百度云之AccleriderMini使用
    Angular结构简单介绍
    Phonegap
    Deepin-安装vscode
    javascript 递归函数调用(recursive funciton call)
    go 中的pacage 名称 和import {}中的名称
    go get 下载的包放在哪里呢?
  • 原文地址:https://www.cnblogs.com/nyist-xsk/p/7563475.html
Copyright © 2011-2022 走看看