我正在寻找一个正则表达式,它将标识一个序列,其中文本中的整数指定表达式末尾的尾随字母的数量。此特定示例适用于识别堆积格式的遗传数据中的插入和删除。
例如:
如果我正在搜索的文本是:
AtT+3ACGTTT-1AaTTa
我需要匹配插入和删除,在这种情况下是+3ACG
and -1A
。整数 (n) 部分可以是任何大于 1 的整数,我必须捕获 n 个尾随字符。
我可以将单个插入或删除与 匹配[+-]?[0-9]+[ACGTNacgtn]
,但我不知道如何获取整数指定的尾随 ACGTN 的确切数量。
如果这里有一个明显的答案,我很抱歉,我已经搜索了几个小时。谢谢!
(更新)
我通常使用 Python 工作。我已经能够在 python 中使用 re 模块找到的一种解决方法是调用每个 in/del 的整数和跨度,并将两者结合起来以提取适当长度的文本。
例如:
>>> import re
>>> a = 'ATTAA$At^&atAA-1A+1G+4ATCG'
>>> expr = '[+-]?([0-9]+)[ACGTNacgtn]'
>>> ints = re.findall(expr, a) #returns a list of the integers
>>> spans = [i.span() for i in re.finditer(expr,a)]
>>> newspans = [(spans[i][0],spans[i][1]+(int(indel[i])-1)) for i in range(len(spans))]
>>> newspans
>>> [(14, 17), (17, 20), (20, 26)]
由此产生的元组允许我切掉插入缺失。可能不是最好的语法,但它有效!