생물정보학 끄적끄적

DNA Sequence에 Regular Expressions 적용하기

Hazel Y. 2024. 1. 1. 22:49

 

유전체 데이터는 A, T, G, C의 네 가지 알파벳 (염기) 으로 구성된 일종의 텍스트 데이터이다. 따라서 데이터 내에서 특정 패턴의 염기 서열을 추출할 때, regular expressions를 사용할 수 있다. 따라서 이번 포스팅에서는 regular expressions에 대해 공부해보려 한다. 아래 Reference에 있는 링크에 접속하면 더 자세하게 설명되어 있고 연습 문제도 풀어볼 수 있으므로 관심 있다면 한 번 확인해 보면 좋을 것 같다.


1. 문자

- e.g., abcde → abcde

Regular Expression DNA Sequence Match or Not
CTT TAGACCTTAC Match
TTGACCGGAT Not match
ACAGTGTCTT Match

 

2. 숫자

- e.g., 123 → 123

 

3. 아무 문자/특수문자 (\D)

- e.g., abcd# → \D\D\D\D\D

Regular Expression DNA Sequence Match or Not
ACA\D TGACACGTTT Match
ATGGGTTACT Not match
GCAATCACAT Match

 

4. 아무 숫자 (\d)

- e.g., 123  → \d\d\d

 

5. 아무 문자/특수문자/숫자 (.)

- e.g. abcde123# → .........

Regular Expression DNA Sequence Match or Not
CT.T CCAAGACTGG Not match
CTATGCACGA Match
AGCAACTCTT Match

 

6. 온점 (\.)

- e.g., hi.flower → hi\.flower

 

7. 주어진 문자/특수문자/숫자 중 하나 ([abc])

- e.g., dog → [fdb]og

Regular Expression DNA Sequence Match or Not
TGTT[AG] GAGTGTTAAA Match
ATGTTGACCC Match
CTGTATTTGG Not match

 

8. 복수 개의 문자/특수문자/숫자 중 어느 하나도 포함하지 않고 ([^abc])

- e.g., dog → [^abc]og

Regular Expression DNA Sequence Match or Not
GAT[^GT] GATGCGGGTA Match
GTAGATGAGT Match
GCAGGGACTC Not match

 

9. a에서 z까지의 문자 ([a-z]), A에서 Z까지의 문자 ([A-Z])

- 대소문자 구분

- e.g., K → [A-Z]

Regular Expression DNA Sequence Match or Not
AGG[A-Z] CGAGGTCAAG Match
TACATTACCC Not match
TCTCATAGGG Match

 

10. 0에서 9까지의 숫자 ([0-9])

- e.g., 7 → [0-9]

 

11. [A-Za-z0-9_] = \w

- e.g., U_r4 → \w\w\w\w

Regular Expression DNA Sequence Match or Not
CAC\w GGCGTTCTAG Not match
ATCACGTTAC Match
CACCATATCA Match

 

12. \w에 포함되지 않은 특수문자들 (\W)

- e.g., @?+ → \W\W\W

13. 특정 문자/특수문자/숫자 m번 반복 ({m})

- e.g., yy → y{2}

Regular Expression DNA Sequence Match or Not
GC{3} TTCGAGCATG Not match
ACACCATCTC Not match
CGCTGTGCCC Match

 

14. 특정 문자/특수문자/숫자 m번에서 n번 반복 ({m,n})

- e.g., uuu u{1,4}

Regular Expression DNA Sequence Match or Not
ATC{2,5} ATCCTAGTAG Match
ATCCCCCACG Match
TATCACGCTT Not match

 

15. 반복 횟수 ≥ 0 (*)

- e.g., aaa → b*

Regular Expression DNA Sequence Match or Not
A*TG AATGAAAATG Match
TTTTTCGCTG Match
ACAGTCATAT Not match

 

16. 반복 횟수 1 (+)

- e.g., aaa a+

Regular Expression DNA Sequence Match or Not
TG+ TGGGGTGCTC Match
CTAAGCTTTT Not match
CCACTTGGCT Match

 

17. 있거나 없거나 (?)

- e.g., abd → abc?d

Regular Expression DNA Sequence Match or Not
AGC?T GGGTCAGCTA Match
GGCCTCCGTG Not match
CCCGGAGTTT Match

 

18. 아무 공백 (\s)

- space, tab, new line 모두 포함

- e.g., a bc → a\sbc

 

19. 공백이 아닌 아무 문자/특수문자/숫자 (\S)

- e.g., ab → \S\S

Regular Expression DNA Sequence Match or Not
CCG\SC CGGCGCAGTG Not match
CTGCCGACAG Match
CCGGCCATTG Match

 

20. 특정 문자/특수문자/숫자로 시작(^)하고 끝($)나는 줄

- e.g., abcdefg → ^a\D+g$

Regular Expression DNA Sequence Match or Not
^C\D+T$ TCTTTGGGGC Not match
CTCATTCGAG Not match
CCTATCTTGT Match

 

22. 특정 group capture하기 (())

- e.g., abcdefg에서 abcdef capture하기 → ^(a\D+)g$

Regular Expression DNA Sequence Match or Not Captured Group
^CGGG(\D+)C$ GTTGGGCTTA Not match -
CGGGACCACC Match ACCAC
CGGGGTAGTC Match GTAGT

 

23. 특정 subgroup capture하기 ((()))

- e.g., abcdefg에서 abcdef와 bcd capture하기 → ^(a(bcd)\D+)g$

Regular Expression DNA Sequence Match or Not Captured Group Captured Subgroup
(\D+(CCT.)\D+)C$ CGGCCTCCCC Match CGGCCTCCC CCTC
AGCCCTGCGC Match AGCCCTGCG CCTG
TGCACCGAAA Not match - -

 

24. abc 또는 def (abc|def)

- e.g., ABCdef → ABC(def|ghij)

Regular Expression DNA Sequence Match or Not
(T.+G|C.+C)AAG GCTACGGAAG Match
GTGATAAGCT Not match
CCGGCAAGCA Match

Reference

https://regexone.com/

 

RegexOne - Learn Regular Expressions - Lesson 1: An Introduction, and the ABCs

Regular expressions are extremely useful in extracting information from text such as code, log files, spreadsheets, or even documents. And while there is a lot of theory behind formal languages, the following lessons and examples will explore the more prac

regexone.com