1. 程式人生 > >Python Re Group()

Python Re Group()

import re

line='Cats are smarter then dogs'
searchObj=re.search(r'(.*) are (.*?) .*',line,re.M|re.I)
#searchObj=re.match('w','WWW.baidu.com',flags=re.I)
if searchObj:
    print(searchObj)
    print('group:',searchObj.group())
    print("group1:",searchObj.group(1))
    print("group2:",searchObj.group(2))
    print("groups:",searchObj.groups())
else:
    print('nothing')

---------------------------------------------------------------------------
<_sre.SRE_Match object; span=(0, 26), match='Cats are smarter then dogs'>
group: Cats are smarter then dogs
group1: Cats  #對應第1個括號
group2: smarter   #對應第2個括號
groups: ('Cats', 'smarter')

正則表示式中,group()用來提出分組截獲的字串,()用來分組

1

2

3

4

5

6

import re

= "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)肯定不對了