匹配次数用 {}界定
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
>>> na.group(1)
‘GTAC‘
>>> na.group(2)
Traceback (most recent call last):
File "", line 1, in
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
>>> 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 效果参考: