python 正则表达式匹配次数 findall 用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 正则表达式匹配次数 findall 用法相关的知识,希望对你有一定的参考价值。

匹配次数用 {}界定


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/[email protected]/blog/static/35265851201672431418177/


本文出自 “R和Python应用” 博客,请务必保留此出处http://matrix6ro.blog.51cto.com/1746429/1875383

以上是关于python 正则表达式匹配次数 findall 用法的主要内容,如果未能解决你的问题,请参考以下文章

Python连续多次匹配正则表达式(不是findall方式)

Python 正则表达式 findall 有效,但匹配不 [重复]

python 正则(re.compile()/re.findall())

python)使用正则表达式查找所有匹配项(从 re.search 更改为 re.findall)[重复]

Python: 字符串搜索和匹配,re.compile() 编译正则表达式字符串,然后使用match() , findall() 或者finditer() 等方法

python正则表达式--findallfinditer方法