이 목적으로 정규 표현식과 캡처 링 그룹을 사용할 수 있습니다. 자세한 정보는 웹에서 "regex"또는 "regular expression"을 검색하면 유연한 검색 및 추출 패턴을 설정하는 방법을 안내 할 여러 사이트가 있습니다. 아래의 문자열 추출을 위해 다음과 같이 작동합니다 (좌표는 항상 범위으로 시작한다고 가정합니다). gsub의 대안으로 stringi
패키지의 stri_extract
등을 사용할 수도 있습니다.
그룹에게 (괄호 안에 내용) 캡처
검색 : 모든 문자 뒤에 문자열의
(^.*)
시작 0 번 이상 콜론 다음에 어떤 문자 뒤에 0 번 이상
(range.*:)
범위를 : (\\d+)
하나 이상의 숫자
(\\D)
이상의 비 문자 숫자
(\\d+)
하나 이상의 숫자
(.*$)
모든 문자를 0 회 이상 문자열의 끝에까지
추출물 :
\\3
캡처 즉 제 3 그룹, 즉 제 (\\d+)
\\5
캡처 기 (5), 제 (\\d+)
string <- "hg38_ct_tbrefGene_6787_NM_000029_1_range=chr1:230709995-230710853_5'pad=0_3'pad=0_strand=-_repeatMasking=none"
strsplit(gsub("(^.*)(range.*:)(\\d+)(\\D)(\\d+)(.*$)", "\\3 \\5", string , perl = TRUE), " ")
# [[1]]
# [1] "230709995" "230710853"