テキスト内の整数が式の最後にある末尾の文字の数を指定するシーケンスを識別する正規表現を探しています。この特定の例は、パイルアップ形式の遺伝子データの挿入と削除を識別するために適用されます。
例えば:
私が検索しているテキストが次の場合:
AtT+3ACGTTT-1AaTTa
挿入と削除を一致させる必要が+3ACG
あります。この場合はと-1A
です。整数(n)の部分は、1より大きい任意の整数にすることができ、n個の末尾の文字をキャプチャする必要があります。
単一の挿入または削除をと一致させることは[+-]?[0-9]+[ACGTNacgtn]
できますが、整数で指定された末尾のACGTNの正確な数を取得する方法がわかりません。
ここに明白な答えがある場合はお詫び申し上げます。私は何時間も探していました。ありがとう!
(アップデート)
私は通常Pythonで作業します。Pythonのreモジュールで理解できた1つの回避策は、すべてのin / delの整数とスパンの両方を呼び出し、2つを組み合わせて適切な長さのテキストを抽出することです。
例えば:
>>> 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)]
結果のタプルを使用すると、インデルをスライスできます。おそらく最良の構文ではありませんが、機能します!