2

Rとsubを使ってシンボル周辺の文字を抽出したいです。多くの正規表現を試しましたが、欲しいものが得られません。

私のベクトル:

c("G>GA", "T>A", "G>A", "G>A", "A>T", "CT>C", "T>C", "T>C", "A>T", "T>C", "T>A", "A>G", "CCGCCGCGGCCGCCGTCTTCCACCAACAACATGGCGGA>C", "C>T", "T>A", "T>C", "T>G", "G>C", "T>G", "T>A", "G>A")

の前後に 1 文字だけ必要>です。

私の最善の試みは:

sub("(.*?)>", ">", aa, perl = TRUE)
4

3 に答える 3

9

正規表現でキャプチャ グループを使用する必要があります。

vec <- c("G>GA", "T>A", "G>A", "G>A", "A>T", "CT>C", "T>C", "T>C", "A>T", "T>C", "T>A", "A>G", "CCGCCGCGGCCGCCGTCTTCCACCAACAACATGGCGGA>C", "C>T", "T>A", "T>C", "T>G", "G>C", "T>G", "T>A", "G>A")
> sub(".*(.)>(.).*","\\1\\2",vec)
 [1] "GG" "TA" "GA" "GA" "AT" "TC" "TC" "TC" "AT" "TC" "TA" "AG" "AC" "CT" "TA"
[16] "TC" "TG" "GC" "TG" "TA" "GA"

つまり、正規表現は何回も 0 回以上一致し.*、次に次の文字をキャプチャし(.)、大なり記号と一致し、次の文字を>キャプチャ(.)して、最後に 0 回以上一致します.*。これをすべてキャプチャーされた 2 人のキャラクターに置き換えます\\1\\2

于 2014-01-13T15:59:37.153 に答える