regex - 提取R中符号周围的字符

标签 regex string r genetics

我想使用 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/

相关文章:

c - %[^\n] 和 %[^\n]s 有什么区别?

r - Bookdown 中的图编号消失

r - 如何查找日期属于哪个日期范围?

Javascript时间转换正则表达式

javascript - 正则表达式匹配 "everything but"与 webpack 的 kebab-case

javascript - 如何替换输入值的选定部分?

java - 正则表达式:所有字母数字,中间最多有一个点

java - 如何将十六进制字符串分成两部分?

c - 字符串在函数调用后设为 NULL

r - 将数据框转换为列表的树形结构列表