2016-09-18 3 views
-2

공간이없는 문자열이 있습니다.두 단어 사이에 문자열을 추출하는 정규식

ATG AGC TAA CTC AGG TGA TGG GGA ATG CCC CGC TAA 

는 나도 TAG|TGA|TAA (끝 부분을 포함하지 않아야) 와 ATG과 끝 사이의 문자열을 추출해야합니다. 문자열에서 문자열을 추출하려면 어떻게해야합니까?

ATGAGCATGCCCCGCTAA 정규 표현식을 사용하면 어떻게됩니까? 예상대로

내가

pattern = re.compile(r'(?=(ATG(?:...)*?)(?=TAG|TGA|TAA))') 

을 시도 것을 작동하지 않습니다. 정규식 다음

+1

어떤 결과가 있습니까? – Soviut

+4

나는이 같은 질문이 매년이 시간에 주위에 물어 오는 것처럼 느낀다 .... 예를 들어 [여기] (http://stackoverflow.com/q/18731894/) 및 [여기] (http://stackoverflow.com/ q/16260794 /) 및 [여기] (http://stackoverflow.com/q/19761908/) 및 [여기] (http://stackoverflow.com/q/31757876) 및 – Dan

+2

왜'ATGCCCCGCTAA' 'TAA'가 포함되어 있습니까? 그리고'ATGAGC'는 그렇지 않습니까? – Kasramvd

답변

1

사용 :이 일치 후행 포함되지 않습니다

In [14]: regex = re.compile(r'(ATG.*?)(?:TAG|TGA|TAA)') 

In [15]: regex.findall(s) 
Out[15]: ['ATGAGC', 'ATGGGGAATGCCCCGC'] 

참고.

0
import re 

pattern = re.compile(r'(ATG[A-Z]+)(?:TAG|TGA|TAA)') 
results = pattern.search('ATGCCCCGCTAA') 

print results.groups(0) 

엔딩이 포함되어 있지 않습니다 주어진

('ATGCCCCGC',) 
0

이 작동의 결과 :

>>> re.findall(r'(ATG(?:...)*?)(?:TAG|TGA|TAA)', seq) 
['ATGAGC', 'ATGCCCCGC'] 

?: 패턴이 결과에서 캡처되지 않습니다.

: 정확히 3자를 지정합니다. 대안은 .{3}이거나 더 제한적인 경우는 [ACTG]{3}

*? : 최소 일치를 의미합니다. 이것이 없으면 가장 길게 매치됩니다.

관련 문제