我想使用 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")
我只需要在 >
前后各有一个字符。
我最好的尝试是:
sub("(.*?)>", ">", aa, perl = TRUE)
最佳答案
您需要在正则表达式中使用捕获组:
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"
换句话来说,正则表达式匹配任何内容零次或多次.*
,然后捕获下一个字符(.)
,然后匹配大于号>
然后捕获下一个字符 (.)
,然后在 .*
末尾匹配任何内容零次或多次。将所有内容替换为两个捕获的字符 \\1\\2
。
关于regex - 提取R中符号周围的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21095564/