在python中搜索具有可变间隙的模式

时间:2013-09-17 18:32:43

标签: python regex

我在包含不同字符串的列表中寻找模式:

names = ['TAATGH', 'GHHKLL', 'TGTHA', 'ATGTTKKKK', 'KLPPNF']

我想选择具有模式'T-T'的字符串(无论字符串如何开始),因此将选择这些元素并将其附加到新列表中:

namesSelected = ['TAATGH', 'ATGTTKKKK']

使用grep我可以:

grep "T[[:alpha:]]\{2\}T"

re python中是否有类似的模式?

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

我认为这很可能是你想要的:

re.search(r'T[A-Z]{2}T', inputString)

Python中[[:alpha:]]的等价物将是[a-zA-Z]。如果您希望允许使用小写字母,则可以在上面的代码段中将[A-Z]替换为[a-zA-Z]

re.search的文档。

答案 1 :(得分:0)

import re

def grep(l, pattern):
    r = re.compile(pattern)
    return [_ for _ in l if r.search(pattern)]

nameSelected = grep(names, "T\w{2}T")

请注意使用\w代替[[:alpha:]]

答案 2 :(得分:0)

是的,您可以使用re.search

>>> names = ['TAATGH', 'GHHKLL', 'TGTHA', 'ATGTTKKKK', 'KLPPNF']
>>> reslist = []
>>> for i in names:
...     res = re.search(r'T[A-Z]{2}T', i)
...     if res:
...             reslist.append(i)
...
>>>
>>> print(reslist)
['TAATGH', 'ATGTTKKKK']