この目的のために、正規表現グループとキャプチャグループを使用することができます。詳細については、Webで「正規表現」または「正規表現」を検索するだけで、柔軟な検索パターンと抽出パターンを設定する方法をガイドするいくつかのサイトがあります。以下のように文字列の抽出は以下のようになります(座標は常にの範囲で始まると仮定します)。 gsubの代わりに、stringi
パッケージのstri_extract
などを使用することもできます。
基を捕捉するための検索(括弧内のコンテンツ):
(^.*)
任意の文字に続く文字列の先頭ゼロ回以上
(range.*:)
範囲結腸続い任意の文字が続くゼロ回以上。
(\\d+)
1桁以上
(\\D)
一つの非数字文字
(\\d+)
1桁以上
(.*$)
任意の文字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"
を捕捉