匹配次数用 {}界定


re.search 能产生group(), 可以访问每个组的字符串

re.findall 产生的结果是列表,其中的元素可以是字符串,也可以是元组

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\user>python
Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul  5 2016, 11:41:13) [MSC v.1
900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> str="ATGTACGTACGTACTTTCCGT"

>>> pat_str=re.compile("(GTAC){1}")
>>> na = re.search(pat_str,x)
>>> na
<_sre.SRE_Match object; span=(2, 6), match='GTAC'>
>>> na.group(1)
'GTAC'
>>> na.group(2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: no such group

>>> na.group(0)
'GTAC'

>>> for i in na.group():
...     print (i)
...
G
T
A
C

>>> str_x="ATGTACGTACGTACTTTCCGTTTCCCT"
>>> str_y=re.compile("(GTAC){1}[GTAC]{5}")
>>> na = re.search(str_y, str_x)
>>> na.group()
'GTACGTACG'

>>> x="ATGTACGTACGTACTTTCCGTTTCCCTGTACCCCGGTTAAT"
>>> y=re.compile("(GTAC){1}[GTAC]{5}")
>>> na = re.search(y,x)
>>> na.group()
'GTACGTACG'
>>> na.group(1)
'GTAC'


>>> nas = re.findall(y, x)
>>> nas
['GTAC', 'GTAC']

>>> re.sub(y,"NNNNNNNNN", x)
'ATNNNNNNNNNTACTTTCCGTTTCCCTNNNNNNNNNTTAAT'
>>> x
'ATGTACGTACGTACTTTCCGTTTCCCTGTACCCCGGTTAAT'



>>> y=re.compile("(GTAC){1}[GTAC]{5}", flags=re.I)
>>> nag=re.search(y,x)
>>> nag.group()
'GTACGTACG'
>>> for i in na.group():
...     print (i)
...
G
T
A
C
G
T
A
C
G
>>> for i in na.group(1):
...     print (i)
...
G
T
A
C

# 使用compile时设置flags 与 search时再使用 flags=re.I 效果一样
>>> na_re_I = re.search(r"(GTAC){1}[GTAC]{5}", x, flags=re.I)
>>> na_re_I
<_sre.SRE_Match object; span=(2, 11), match='GTACGTACG'>

>>> na_re_I.group()
'GTACGTACG'
>>> na_re_I.group(1)
'GTAC'


>>> y.findall(x)
['GTAC', 'GTAC']

>>> y_all=re.compile("((GTAC){1}[GTAC]{5})", flags=re.I)
>>> nas_all = re.findall(y_all, x)
>>> nas_all
[('GTACGTACG', 'GTAC'), ('GTACCCCGG', 'GTAC')]
>>>


findall 效果参考:

http://blog.csdn.net/cashey1991/article/details/8875213

http://blog.163.com/imnoqiao@126/blog/static/35265851201672431418177/